Регулярные выражения
Регулярное выражение — это шаблон задающий ограничение на вводимые пользователем значения. Оно может состоять как из обычных, так и из специальных символов и их комбинаций.
Обычные символы интерпретируются буквально, например регулярное выражение абв интерпретируется как строгая последовательность соответствующих букв в этом порядке.
Помимо этого, для составления более сложных регулярных выражений используются специальные символы. Их написание и значение подробнее расписаны ниже.
Специальные символы
Символ | Описание | Пример |
Общие символы и символы количества | ||
\ |
Для обычных символов, означает что следующий символ будет интерпретироваться как специальный. Для специальных символов, означает что следующий символ будет интерпретироваться буквально. |
\а — символ а становится специальным символом, означающим границу слова. \* — специальный символ * интерпретируется как обычный символ "звездочка". |
^ | Следующий символ должен присутствовать в начале строки. | ^А — символ А должен быть первым в строке. |
$ | Предыдущий символ должен присутствовать в конце строки. | а$ — символ а должен быть последним в строке. |
* | Предыдущий символ может быть повторен 0 или больше раз. | а* — символ а может не быть в строке, а может повториться множество раз. |
+ | Предыдущий символ должен быть повторен 1 или больше раз. | а+ — символ а может повториться один раз в строке, а может повториться множество раз. |
? | Предыдущий символ должен быть повторен 0 или 1 раз. | а? — символ а может не быть в строке, а может быть один раз. |
. | Любой символ кроме переноса строки. | a.c равно abc, a1c и тд. |
x|y | В строке должен присутствовать либо x либо y. | abc|xyz — в строке может быть abc или xyz. |
{n} | Предыдущий символ должен быть повторен n раз. | а{2} — а должна быть повторена в строке дважды. |
{n,m} | Предыдущий символ должен быть повторен не меньше n раз, но и не больше m раз. | а{2,5} — а должна быть повторена в строке хотя бы дважды и не больше пяти раз. |
Скобочные группы | ||
(x) | Объединение символов в единый элемент (с запоминанием). |
abc* — * относится только к c. (abc)* — * относится ко всему выражению в скобках. |
(?:x) | Объединение символов в единый элемент (без запоминания). | |
x(?=y) | Соответствует x только если за ним идет y. | ab(?=c) — после ab должна быть c. |
x(?!y) | Соответствует x только если за ним не идет y. | ab(?!c) — после ab не должно быть c. |
Соответствия набору символов | ||
[xyz] | Соответствует любому из символов в скобках. | [abcd] или [a-d] — строка должна состоять из любых символов от a до d. |
[^xyz] | Соответствует любому из символов не в скобках. | [^abcd] или [^a-d] — строка должна исключать символы от a до d. |
[\b] | Бэкспейс. | [\b] — находит символ бэкспейса в строке. |
\b | Граница слова. | \b — перед или после предыдущего символа должен быть пробел или другая граница слова. |
\d | Цифровой символ. | \d — любой из символов от 0 до 9. |
\D | Нецифровой символ. | \D — любой из символов кроме символов от 0 до 9. |
\s | Пробел. | \s — находит пробел, табуляцию, перенос строки. |
\S | Не пробел. | \S — любой из символов кроме пробела, табуляции, переноса строки. |
\w | Цифробуквенные символы и нижнее подчеркивание. | \w — любой из символов от 0 до 9, от А до Я и _. |
\W | Нецифробуквенные символы. | \w — любой из символов кроме символов от 0 до 9, от А до Я и _. |
\0 | NULL | \0 — находит пустое множество. |
Примеры регулярных выражений и их разбор
Дата формата ДД.ММ.ГГГГ
Выражение: (0?[1-9]|[12][0-9]|3[01])\.(0?[1-9]|1[012])\.(19|20)\d\d
(0?[1-9]|[12][0-9]|3[01]) | |
0?[1-9] | 0 может быть повторен 1 или 0 раз, а за ним идет любая цифра кроме 0. |
[12][0-9] | 1 или 2, а за ними любая цифра. |
3[01] | 3 и 0 или 1. |
| | или. |
(0?[1-9]|1[012]) | |
1[012] | 1 и 0 или 1 или 2. |
\.(19|20)\d | |
\. | обычный символ точки. |
19|20 | 19 или 20. |
\d | любая цифра. |
Возможная строка: 11.03.2005
Выражение: [^@\s]+@[^@\s]+\.[^@\s]+
[^@\s]+ | |
[^@\s] | любой из символов кроме @ и пробела. |
+ | предыдущий символ может быть повторен 1 или более раз. |
@[^@\s]+ | |
@ | символ @. |
\.[^@\s]+ | |
\. | обычный символ точки. |
Возможная строка: email@pp.com
Другие регулярные выражения
Email без латинских букв
(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) |
Для валидации номера телефона без рамок кодов страны
[\+\-]?[\d| ]+[\.\,]?[\d| ]* |
Возможная строка: +7 900 700 30 10 / 79007003010 / 8900 700 30 10 / + 37 900 700 30 10
Валидация номера с кодом определенных стран и возможностью выйти
(^(\+?7|\+?37)\d{10}$|отмена|назад|выход|стоп) |
Возможная строка: +79007003010 / +379007003010 / +77007003010
Имя или слово с заглавной
[А-Я]{1}[а-я]{2,20} |
Возможная строка: Метабот
Нет комментариев