Введение в регулярные выражения

Регулярные выражения это важнейший инструмент для валидации форм. Он широко применяется в поисковых системах и алгоритмах работы поисковых роботов. Если вы хотите написать свой собственный селекторный движок (используется для поиска элементов в модели 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» был подготовлен дружной командой проекта Сайтостроение от А до Я.

Автор: Unknow, Источник
 

Добавить комментарий


Защитный код
Обновить