Понимание регулярных выражений

Регулярные выражения это важнейший инструмент для валидации форм. Он широко применяется в поисковых системах и алгоритмах работы поисковых роботов. Если вы хотите написать свой собственный селекторный движок (используется для поиска элементов в модели DOM), то вам обязательно понадобится знание регулярных выражений. В этой статье мы постараемся разобраться с особенностями создания регулярных выражений.


Мы рассмотрим регулярные выражения в 3 этапа.

Содержание

Этап 1

СимволОписание
^Начало строки
$Конец строки
.Любой одиночный символ
+Один или более символов
Символ Escape-последовательности
?Ноль или более символов

Примеры:

Ввод точно совпадает с «abc»

var A = /^abc$/;

Ввод начинается с «abc»

var B = /^abc/;

Ввод заканчивается на «abc»

var C = /abc$/;

Ввод «abc» и еще одного символа (например, «abcx»)

var D = /^abc.$/;

Ввод «abc» и более чем одного символа (например, «abcxy»)

var E = /^abc.+$/;

Ввод точной последовательности «abc.def» (так как «.» оформлена в виде escape-последовательности)

var F = /^abc.def$/;

Разрешает ввод любых символов, следующих за «abc» (например, «abcxyz12..»

var G = /^abc.+?$/

Этап 2

СимволОписание группы
[abc]Находит любой символ из перечисленных
[^abc]Любой символ, кроме перечисленных
[a-zA-Z0-9]Числа из групп от a до z, от A до Z и цифры
[a-z-._]Символы от a до z, а также спецсимволы
(.*?)Поиск и запоминание любых символов
(com|info)Ввод должен совпадать с «com» или «info»
{2}Ввод должен быть длиной точно в 2 символа
{2,3}Минимальная длина 2, максимальная — 3 символа
{2,}Ввод должен быть более 2 символов

Пример:

var URL = /^(http|https|ftp)://(www+.)?[a-zA-Z0-9]+.([a-zA-Z]{2,4})/?/;  // валидация URL-адреса

URL.test(“http://9lessons.info”);                      // прошло валидацию
URL.test(“http://www.9lessons.info”);            // прошло валидацию
URL.test(“https://9lessons.info/”);                   // прошло валидацию
URL.test(“http://9lessons.info/index.html”);    // прошло валидацию

Этап 3

Краткая формаЭквивалентПояснение
d[0-9]Любые цифры
D[^0-9]Любые символы, кроме цифр
w[a-zA-Z0-9_]Символы, цифры и символ подчеркивания
W[^a-zA-Z0-9_]Любые символы, кроме указанных букв, цифр и символа подчеркивания
sТолько символ пробела
SЛюбой символ, кроме пробела

Пример:

var number = /^(+d{2,4})?s?(d{10})$/;  // валидация номера телефона

number.test(1111111111);           // прошло валидацию
number.test(+111111111111);     // прошло валидацию
number.test(+11 1111111111);    // прошло валидацию
number.test(11111111);               // НЕ прошло валидацию

Данная публикация представляет собой перевод статьи «Understanding Regular Expression» , подготовленной дружной командой проекта Интернет-технологии.ру

Меню