logo

[ELMA3] Пример применения регулярных выражений для строковых полей

Регулярное выражение – это шаблон, который обработчик регулярных выражений пытается сопоставить с введенным текстом. Шаблон состоит из односимвольных или многосимвольных литералов, операторов или конструкций. С помощью регулярных выражений можно определить, входит ли шаблон регулярного выражения во входной текст.

Прочитать об элементах языка регулярных выражений можно здесь.

В настройках свойства типа Строка на вкладке Дополнительно есть возможность указать регулярное выражение и сообщение об ошибке.

Регулярное выражение – шаблон, с помощью которого будет проверяться корректность введенной строки. В случае несоответствия в веб-приложении может быть выведено сообщение об ошибке, указанное в поле Сообщение об ошибке.

Сообщение об ошибке – текст сообщения, который будет отображаться при вводе строки, не отвечающей требованиям введенного регулярного выражения.

В каждом примере, приведенном ниже, содержится:

‘^’ – начало строки,

‘$’ – конец строки,

‘?’ в ‘()?’ означает, что все, что находится в (), может повторяться 0 или 1 раз. Если не добавить это условие, то в случае, если поле не обязательно и не заполнено, будет возникать сообщение об ошибке.

Пример формата ФИО

Пример проверки реквизитов

Регулярное выражение для проверки серии паспорта:

^([0-9]{2}\s{1}[0-9]{2})?$

Разберем выражение:

  1. [0-9]{2} – позволяет ввести две любые цифры.
  2. \s{1} – позволяет ввести один пробел.
  3. [0-9]{2} – позволяет ввести две любые цифры.

Пример: 12 34

Регулярное выражение для проверки номера паспорта:

^([0-9]{6})?$

Разберем выражение:

  1. [0-9]{6} – позволяет ввести 6 любых цифр.

Пример: 123456

Регулярное выражение для проверки кода подразделения:

^([0-9]{3}[-]{1}[0-9]{3})?$

Разберем выражение:

  1. [0-9]{3} – позволяет ввести 3 любые цифры.
  2. [-]{1} – позволяет ввести один символ ‘-’.
  3. [0-9]{3} – позволяет ввести 3 любые цифры.

Пример: 123-456

Регулярное выражение для ИНН:

^(([0-9]{12})|([0-9]{10}))?$

Разберем выражение:

  1. [0-9]{12} – позволяет ввести 12 любых цифр.
  2. [0-9]{10} – позволяет ввести 10 любых цифр.
  3. (a|b) – позволяет ввести либо левую часть выражения, либо правую.

Пример:

  • 123456789012
  • 1234567890

Регулярное выражение для ОГРН:

^([0-9]{13})?$ – позволяет ввести 13 любых цифр.

Регулярное выражение для КПП:

^([0-9]{9})?$ – позволяет ввести 9 любых цифр.

Пример проверки телефона

Регулярное выражение для проверки номера мобильного телефона:

^([9]{1}[0-9]{9})?$

Разберем выражение:

  1. [9]{1} – указывает на то, что первым символом будет цифра 9.
  2. [0-9]{9} – позволяет ввести 9 цифр.

Пример: 9123456789

Регулярное выражение для проверки номера городского телефона:

^([1-9]{1}[0-9]{9})?$

Разберем выражение:

  1. [1-9]{1} – указывает на то, что первым символом будет любая цифра, кроме 0.
  2. [0-9]{9} – позволяет ввести 9 цифр.

Пример: 4951234567

Пример проверки строки на соответствие формату электронной почты

В данном примере регулярное выражение используется для того, чтобы проверить, имеет ли строка допустимый формат адреса электронной почты.

Регулярное выражения для проверки email:

Разберем выражение по частям:

  1. ([a-z0-9_-]+\.)* - позволяет ввести:
    1. в [] указан допустимый диапазон символов: символы латинского алфавита от a до z в нижнем регистре, цифры и символы ‘_’ и ‘-’.
    2. квантор ‘+’ после [] означает, что должен быть введен хотя бы один символ из диапазона, указанного в [].
    3. в выражении ‘\.’ ‘\’ является экранирующим символом, и указывает на то, что ‘.’ является не диапазоном любых символов, а метасимволом (т.е. в конце выражения должна присутствовать точка).
    4. ‘*’ в ‘()*’ означает, что все, что находится в () может повторяться 0 или более раз.

Пример: ivan19.ivanovich.

  1. [a-z0-9_-]+@[a-z0-9-]+ - позволяет ввести:
    1. символы латинского алфавита от a до z в нижнем регистре, цифры и символы ‘_’ и ‘-’.
    2. квантор ‘+’ после [] означает, что должен быть введен хотя бы один символ из диапазона, указанного в [].
    3. символ ‘@’.
    4. символы латинского алфавита от a до z в нижнем регистре, цифры и символ ‘-’.
    5. квантор ‘+’ после [] означает, что должен быть введен хотя бы один символ из диапазона, указанного в [].

Пример: ivanov2000@example_2000

  1. (\.[a-z0-9-]+)* - позволяет ввести:
    1. в выражении ‘\.’ ‘\’ является экранирующим символом, и указывает на то, что ‘.’ является не диапазоном любых символов, а метасимволом (т.е. в начале выражения должна присутствовать точка).
    2. символы латинского алфавита от a до z в нижнем регистре, цифры и символ ‘-’.
    3. квантор ‘+’ после [] означает, что должен быть введен хотя бы один символ из диапазона, указанного в [].
    4. ‘*’ в ‘()*’ означает, что все, что находится в () может повторяться 0 или более раз.

Пример: .example

  1. \.[a-z]{2,6} – позволяет ввести:
    1. в выражении ‘\.’ ‘\’ является экранирующим символом, и указывает на то, что ‘.’ является не диапазоном любых символов, а метасимволом (т.е. в начале выражения должна присутствовать точка).
    2. символы латинского алфавита.
    3. в кванторе {} указано допустимое количество символов, в данном случае – от 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. [^\/:*?"<>|+] – знак ‘^’ в начале диапазона указывает на отрицание (в диапазон включаются все символы, кроме тех, которые написаны после ‘^’).

Пример: Документ1.docx

Регулярное выражения для проверки корректности пути до файла:

^(([A-Z]:\\){1}([^\/:*?"<>|+]\\)*[^\/:*?"<>|+]{1})?$

Пример:

  • C:\Windows\System32\calc.exe;
  • Z:\test.txt.