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

Синтаксические конструкции (модификаторы) в регулярных выражениях

Метасимволы для сопоставления с отдельными символами

Символ Описание
Обычные символы Символы кроме .$^{[(|)*+?\ соответствуют сами себе
\b Соответствует возврату на одну позицию (забой)
\t Соответствует табуляции
\r Соответствует возврату каретки
\v Соответствует вертикальной табуляции
\f Соответствует переводу страницы
\n Соответствует новой строке
\ Если за ним следует специальный символ (один из .$^{[(|)*+?\), соответствует литеральной константе этого символа. Например, \+ соответствует символу +

Метасимволы для сопоставления с типами символов

Класс Символов Описание
. Соответствует любому символу кроме \n
[aeiou] Соответствует каждому отдельному символу, приведённому во множестве
[^aeiuo] Соответствует любому символу, не приведённому во множестве
[3-7a-dA-D] Соответствует любому символу, приведённому в определённых диапазонах
\w Соответствует любому символу из слова, т.е. любому алфавитно-цифровому символу или символу подчёркивания
\W Соответствует любому символу, не применяемому в словах
\s Соответствует любому символу разделителя (пробел, табуляция, перевод страницы, новая строка, возврат каретки либо вертикальная подача)
\S Соответствует любому непробельному символу.
\d Соответствует любому десятичному символу.
\D Соответствует любому недесятичному символу.

Квантификаторы

Квантификатор Описание
* ноль или более совпадений
+ Одно или более совпадений
? Ноль или одно совпадение
{N} N совпадений
{N,} N или более совпадений
{N,M} Между N и M совпадений (включительно)

Типичные регулярные выражения в ASP.net

// Минимальная длина -5, максимальная длина - 20
// Разрешенные символы: a-z, A-Z, 0-9

@"^[a-zA-Z0-9.]{5,20}$"

Внимание: знаки вставки (^) и разделителей денежных знаков ($) указывают здесь на то, что с выражением должна сравниваться вся введённая строка. Без этих символов выражение будет определять лишь наличие шаблона в строке. Это может привести к другим результатам.

В примеры шаблонов, поставляемых вместе с RegularExpressionValidator, не включены разделители, об этом не надо забывать.

// Минимальная длина -5, максимальная длина - 30
// Разрешенные символы: a-z, A-Z, [пробел]

@"^[a-zA-Z ']{5,30}$"

// Минимальная длина -5, максимальная длина - 20
// Разрешенные символы: a-z, A-Z, 0-9
// Первый символ: a-z, A-Z

@"^[a-zA-Z]{1}[a-zA-Z0-9.]{5,19}$"

e-mail, типовые регулярные выражения для электронной почты


// Действительный адрес электронной почты

@"^\w+([-+. ']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"

// e-mail: строка начинается с определённого количества символов (.*)
// и содержит символ @,
// а также еще минимум 1 символ для имени домена, точку (\.),
// и хотя бы 2 символа для расширения домена

".*@.{1,}\..{2}"

// e-mail: Обязательно должен присутствовать символ @ и точка (.),
// допускает наличие только непробельных символов

"\S+@\S+\.\S+"

Для проверки адреса электронной почты могут применяться самые разнообразные регулярные выражения, обладающие самой разной степенью сложности. Дополнительную информацию по этому вопросу и примеры можно найти по адресу http://4guysfromrolla.com/webtech/validateemail.shtml

Пароли


// Допускает любую последовательность словесных символов
// (букв, пробелов или символов подчеркивания)

"\w+"

// Пароль специфической длины
// Должен состоять не менее чем из 4,
// но и не более 10 символов

"\w{4,10}"

// Расширенный пароль
// Длина пароля от 4 до 10 символов
// Первый символ находится в диапазоне a-z или A-Z
// то есть должен начинаться с обычной буквы

"[a-zA-Z]\w{3,9}"

// Расширенный пароль
// Начинается с буквенного символа,
// за которым следует ноль или более словесных символов
// потом одна или более цифр
// затем снова ноль или более словесных символов
// То есть в пароле должна содержаться цифра

"[a-zA-Z]\w*\d+\w*"

Шаблоны

// Номер: 456-56-7894
// Последовательность групп из трёх, двух, затем четырёх цифр
// каждая из которых отделяется дефисом
// Может использоваться при вводе телефонного номера

"\d{3}-\d{2}-\d{4}"