[ELMA3] Пример применения регулярных выражений для строковых полей
Регулярное выражение – это шаблон, который обработчик регулярных выражений пытается сопоставить с введенным текстом. Шаблон состоит из односимвольных или многосимвольных литералов, операторов или конструкций. С помощью регулярных выражений можно определить, входит ли шаблон регулярного выражения во входной текст.
Прочитать об элементах языка регулярных выражений можно здесь.
В настройках свойства типа Строка на вкладке Дополнительно есть возможность указать регулярное выражение и сообщение об ошибке.
Регулярное выражение – шаблон, с помощью которого будет проверяться корректность введенной строки. В случае несоответствия в веб-приложении может быть выведено сообщение об ошибке, указанное в поле Сообщение об ошибке.
Сообщение об ошибке – текст сообщения, который будет отображаться при вводе строки, не отвечающей требованиям введенного регулярного выражения.
В каждом примере, приведенном ниже, содержится:
‘^’ – начало строки,
‘$’ – конец строки,
‘?’ в ‘()?’ означает, что все, что находится в (), может повторяться 0 или 1 раз. Если не добавить это условие, то в случае, если поле не обязательно и не заполнено, будет возникать сообщение об ошибке.
Пример формата ФИО
Пример проверки реквизитов
Регулярное выражение для проверки серии паспорта:
^([0-9]{2}\s{1}[0-9]{2})?$
Разберем выражение:
- [0-9]{2} – позволяет ввести две любые цифры.
- \s{1} – позволяет ввести один пробел.
- [0-9]{2} – позволяет ввести две любые цифры.
Пример: 12 34
Регулярное выражение для проверки номера паспорта:
^([0-9]{6})?$
Разберем выражение:
- [0-9]{6} – позволяет ввести 6 любых цифр.
Пример: 123456
Регулярное выражение для проверки кода подразделения:
^([0-9]{3}[-]{1}[0-9]{3})?$
Разберем выражение:
- [0-9]{3} – позволяет ввести 3 любые цифры.
- [-]{1} – позволяет ввести один символ ‘-’.
- [0-9]{3} – позволяет ввести 3 любые цифры.
Пример: 123-456
Регулярное выражение для ИНН:
^(([0-9]{12})|([0-9]{10}))?$
Разберем выражение:
- [0-9]{12} – позволяет ввести 12 любых цифр.
- [0-9]{10} – позволяет ввести 10 любых цифр.
- (a|b) – позволяет ввести либо левую часть выражения, либо правую.
Пример:
- 123456789012
- 1234567890
Регулярное выражение для ОГРН:
^([0-9]{13})?$ – позволяет ввести 13 любых цифр.
Регулярное выражение для КПП:
^([0-9]{9})?$ – позволяет ввести 9 любых цифр.
Пример проверки телефона
Регулярное выражение для проверки номера мобильного телефона:
^([9]{1}[0-9]{9})?$
Разберем выражение:
- [9]{1} – указывает на то, что первым символом будет цифра 9.
- [0-9]{9} – позволяет ввести 9 цифр.
Пример: 9123456789
Регулярное выражение для проверки номера городского телефона:
^([1-9]{1}[0-9]{9})?$
Разберем выражение:
- [1-9]{1} – указывает на то, что первым символом будет любая цифра, кроме 0.
- [0-9]{9} – позволяет ввести 9 цифр.
Пример: 4951234567
Пример проверки строки на соответствие формату электронной почты
В данном примере регулярное выражение используется для того, чтобы проверить, имеет ли строка допустимый формат адреса электронной почты.
Регулярное выражения для проверки email:
Разберем выражение по частям:
- ([a-z0-9_-]+\.)* - позволяет ввести:
- в [] указан допустимый диапазон символов: символы латинского алфавита от a до z в нижнем регистре, цифры и символы ‘_’ и ‘-’.
- квантор ‘+’ после [] означает, что должен быть введен хотя бы один символ из диапазона, указанного в [].
- в выражении ‘\.’ ‘\’ является экранирующим символом, и указывает на то, что ‘.’ является не диапазоном любых символов, а метасимволом (т.е. в конце выражения должна присутствовать точка).
- ‘*’ в ‘()*’ означает, что все, что находится в () может повторяться 0 или более раз.
Пример: ivan19.ivanovich.
- [a-z0-9_-]+@[a-z0-9-]+ - позволяет ввести:
- символы латинского алфавита от a до z в нижнем регистре, цифры и символы ‘_’ и ‘-’.
- квантор ‘+’ после [] означает, что должен быть введен хотя бы один символ из диапазона, указанного в [].
- символ ‘@’.
- символы латинского алфавита от a до z в нижнем регистре, цифры и символ ‘-’.
- квантор ‘+’ после [] означает, что должен быть введен хотя бы один символ из диапазона, указанного в [].
Пример: ivanov2000@example_2000
- (\.[a-z0-9-]+)* - позволяет ввести:
- в выражении ‘\.’ ‘\’ является экранирующим символом, и указывает на то, что ‘.’ является не диапазоном любых символов, а метасимволом (т.е. в начале выражения должна присутствовать точка).
- символы латинского алфавита от a до z в нижнем регистре, цифры и символ ‘-’.
- квантор ‘+’ после [] означает, что должен быть введен хотя бы один символ из диапазона, указанного в [].
- ‘*’ в ‘()*’ означает, что все, что находится в () может повторяться 0 или более раз.
Пример: .example
- \.[a-z]{2,6} – позволяет ввести:
- в выражении ‘\.’ ‘\’ является экранирующим символом, и указывает на то, что ‘.’ является не диапазоном любых символов, а метасимволом (т.е. в начале выражения должна присутствовать точка).
- символы латинского алфавита.
- в кванторе {} указано допустимое количество символов, в данном случае – от 2 до 6.
Пример: .com
Данный шаблон позволит ввести, например, следующие e-mail адреса:
- ivanov@example.com;
- ivan_ivanov@example.com;
- ivan19.ivanovich.ivanov2000@example_2000.example.com.
Для добавления возможности ввода русскоязычного почтового ящика можно к «a-z» добавить «а-я», регулярное выражение будет выглядеть так:
^(([a-zа-я0-9_-]+\.)*[a-zа-я0-9_-]+@[a-zа-я0-9-]+(\.[a-zа-я0-9-]+)*\.[a-zа-я]{2,6})?$
Прочие примеры
Регулярное выражение для проверки номера частного транспортного средства:
^([АВЕКМНОРСТУХ]{1}[0-9]{3}[АВЕКМНОРСТУХ]{2}[0-9]{2,3})?$
Пример:
- А012ВУ18
- А012ВЕ159
Регулярное выражение для проверки корректности названия файла:
^[^\/:*?"<>|+]+$
Разберем выражение:
- [^\/:*?"<>|+] – знак ‘^’ в начале диапазона указывает на отрицание (в диапазон включаются все символы, кроме тех, которые написаны после ‘^’).
Пример: Документ1.docx
Регулярное выражения для проверки корректности пути до файла:
^(([A-Z]:\\){1}([^\/:*?"<>|+]\\)*[^\/:*?"<>|+]{1})?$
Пример:
- C:\Windows\System32\calc.exe;
- Z:\test.txt.