Для более глубокого изучения, можно воспользоваться статьёй по RegExp - RexEgg
Регулярное выражение — это последовательность селекторов, которые можно использовать для поиска слов по определённым правилам.
Основные символы в регулярных выражениях
- Символы текста - просто символы букв алфавита. Регулярное выражение
оса
найдет совпадение даже в слове «автосалон» - Начала и конца строки - каретка
^
используется для обозначения начала строки, а доллар$
— для конца. Если мы напишем^оса$
, то совпадением будет только со словом «оса» - Классы символов - с их помощью указываются диапазоны символов.
То есть вы можете уточнить, какие буквы, цифры или знаки могут встречаться в регулярном выражении, а какие нет.
[^]
— отрицание диапазона символов. Если коротко, вы можете исключить поиск конкретных символов. Например, [^оса]
не найдёт совпадений со словом «оса», а вот с «осадками» совпадение будет.
Цифры:
[0-9]
— любая цифра от нуля до девяти;\d
— тоже любая цифра, это эквивалент[0-9]
.
Буквы:
[а-яё]
— любая буква кириллицы в нижнем регистре;[а-яёА-ЯЁ]
— любая буква кириллицы в нижнем и верхнем регистре;[a-z]
— любая буква на латинице в нижнем регистре;[a-zA-Z]
— любая буква на латинице в нижнем и верхнем регистре;\w
— любая цифра, латинская буква или знак подчёркивания.
Символы и знаки препинания:
[.,:;?!-]
— знаки препинания.\s
— пробел.
- Квантификаторы - эти селекторы проверяют количество повторений предыдущего символа или группы символов
{n}
— совпадение с точным количеством, гдеn
— это положительное целое число. Например, конструкция[1-3]{1}
будет искать одну цифру от одного до трёх.{min,max}
— диапазон совпадений от минимального до максимального. Например, так можно указать минимальное и максимальное количество символов для ввода —{2,15}
. А ещё одно из значений можно пропустить —{min,}
или{,max}
.- `— одно или бесконечное количество совпадений. Этот селектор равнозначен записи“.
+
— одно или более повторений. Этот селектор равнозначен записи{1,}
.?
— ни одного или одно повторение. Селектор равнозначен записи{0,1}
.
- Модификаторы - это определённые параметры, которые задают настройки для поиска или замены текста
Самые популярные модификаторы:
i
— не учитывать регистр букв;g
— искать все совпадения;u
— поддержка юникод-символов.
- Альтернация - это условие.
Она обозначается символом |
и указывает несколько вариантов, которые могут соответствовать регулярному выражению. Например, регулярное выражение (яблоко|банан)
будет искать строки, содержащие либо слово «яблоко», либо «банан».
Символы группируются в скобках. При этом вы можете добавить условие «или» для любого количества символов: (a|b|c|d)
.
Как составить регулярное выражение
- Нужно сформулировать условие.
Мы хотим составить RegExp для проверки логина, который должен соотвествовать следующим условиям:
- длиннее трёх символов
- содержит буквы на кириллице и латиннице
- регистр нам не важен
- Нужно составить выражение.
- Логин содержит буквы или цифры —
/^[a-zа-яё0-9]/
. - Слово должно быть не короче трёх символов, максимальной длины нет —
/^[a-zа-яё0-9]{3,}/
. - Регистр неважен —
/^[a-zа-яё0-9]{3``,}$/i
.
- Нужно протестировать регулярное выражение.
Для проверки регулярного выражения можно воспользоваться regex101.
Примеры регулярных выражений
- Регулярное выражение для номера телефона
Допустим, мы хотим проверить, что пользователь ввёл телефон в формате (XXX) XXX-XXXX
. Можно составить следующее регулярное выражение: /^\d{3}-\d{3}-\d{4}$/
. Здесь \d
соответствует любой цифре, а фигурные скобки {
и }
указывают количество повторений.
Такое регулярное выражение будет соответствовать строкам, которые начинаются с открывающей скобки. За скобкой следуют три цифры, затем пробел, ещё три цифры, дефис и четыре цифры. Последним идёт символ конца строки.
При проверке
123-456-7890
будет соответствовать шаблону, а(123) 456 7890
— нет.
- Регулярное выражение для электронной почты
Составим регулярное выражение, которое проверяет формат почты username@domain.com
— /^\w+([.-]?\w+)@\w+([.-]?\w+)(.\w)$/
. Выражение сложное, поэтому давайте посимвольно разбирать, что здесь происходит:
^
— начало строки.\w
— любая буква, цифра или символ подчёркивания.+
— указывает, что предыдущий символ (любая буква, цифра или символ подчёркивания) должен повторяться один или более раз.([.-]?\w+)*
— группа символов. Она начинается с точки, дефиса или ни одного из них (?
). За ними следует одна или более буквы, цифры или символы подчёркивания (\w+
). Звёздочка указывает, что эта группа может встречаться нуль или более раз.@
— символ собаки, он обязателен в адресе электронной почты.\w
— любая буква, цифра или символ подчёркивания.([.-]?\w+)*
— аналогичная группа символов, как описано выше..
— просто точка.\w
— любые буквы, цифры или символ подчёркивания.$
— конец строки.
Если коротко, это регулярное выражение будет соответствовать строкам, которые начинаются с одной или более буквы, цифры или символа подчёркивания. За ними следует символ @
. Затем идёт одна или более группа символов — она состоит из букв, цифр или подчёркивания, разделённых точкой. В конце — буквы, цифры или знак подчёркивания.
При проверке
example.email@mail.com
будет соответствовать этому шаблону, аexample.emailmail.com
— нет.
- Регулярное выражение для проверки имени человека
Предположим, мы хотим проверить, что введённое имя содержит только буквы и начинается с заглавной буквы. Для этого можно составить такое выражение: /^[А-Я][а-яё]*$/
. Здесь [А-Я]
соответствует любой заглавной букве, а [а-яё]
— любой букве в нижнем регистре. Звёздочка указывает, что предыдущий символ может повторяться нуль или более раз.
При проверке имя
Иван
будет соответствовать шаблону, аиван
— нет.