Маска и рег. выражение

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


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

Маска

Маска используются для поля строки с любым подтипом кроме текста и задаётся в свойстве Маска. Маска определяет простую спецификацию ввода данных и подставляет дополнительные символы при наборе.

Маска не проверяет обязательность вводимых данных и не блокирует сохранение записи.
Символ Значение
A, a алфавитный символ
N, n алфавитный символ или цифра
X, x любой символ
9, 0 цифра
D, d цифра не равная 0 (1-9)
# цифра или знак плюс/минус
H, h шестнадцатиричный символ (A-F, a-f, 0-9)
B, b двоичный символ (0, 1)
> следующие алфавитные символы переводятся в верхний регистр
< следующие алфавитные символы переводятся в нижний регистр
! изменение регистра отключается
\ отменить действие специальных символов и использовать их в качестве разделителей

Примеры масок

>a!aaaaaaaaaaaaaaaaaaa имя, первый символ приводится к большой букве, не более 20 букв
000.000.000.000;_ IP-адрес
hh:hh:hh:hh:hh:hh;_ MAC-адрес
>nnnnn-nnnnn-nnnnn-nnnnn;# лицензионный номер, приведение алфавитных символов к верхнему регистру

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

Описание регулярных выражений для использования в Руне даётся в упрощённом виде.
Дополнительную информацию и примеры применения см. в интернете.

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

Поля, для которых не выполняются условия заданных регулярных выражений, при сохранении записи подсвечиваются красным оттенком и операция отменяется.

Правила регулярного выражения строятся с использованием символов, кванторов, групп и др.

Символы

Символы можно разделить на четыре группы:

  • непосредственно символы: a, A, 1, ...;
  • специальные символы с предваряющим обратным слешем: [ ] \ / ^ $ . | ? * + ( ) { };
  • набор символов, заключённый в квадратные скобки: [QWERTY], [A-Z], [А-Яа-я0-9Ёё], ...;
  • метасимволы, заменяющие собой некоторые наборы символов:
    • . – любой символ;
    • \d – цифра;
    • \D – нецифровой символ;
    • \w – буква, цифра или символ подчеркивания;
    • \W – символ, не являющийся буквой, цифрой или символом подчеркивания;
    • \s – пробел;
    • \S – любой символ кроме пробела.

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

Для определения позиции символа в строке используются следующие символы:

  • ^ – начало строки;
  • $ – конец строки;
  • \b – граница слова;
  • \B – не граница слова.

Квантификация (число повторений)

Квантификатор после символа определяет сколько раз этот символ может повториться, а после набора символов — сколько раз может повториться любой из символов набора:

  • {n} – ровно n раз;
  • {n,} – не менее n раз;
  • {,m} – не более m раз;
  • {n,m} – не менее n и не более m раз;
  • ? – нет или один раз (аналог {0,1});
  • * – нет или любое число (аналог {0,});
  • + – один и более раз (аналог {1,}).

Группировка и проверка

Символы ( и ) служат для группировки ряда элементов, входящих в состав образца, в один элемент. Для разделения вариантов образцов используется символ |.

Круглые скобки с ? и вариантом условия используются для проверки подстроки, расположенной перед закрывающейся скобкой (подстрока должна быть фиксированной длины):

  • (?<=) – что должно стоять после строки;
  • (?<!) – что не должно стоять после строки;
  • (?=) – что должно стоять перед строкой;
  • (?!) – что не должно стоять перед строкой.

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

.+ не пустая строка (хотя бы один символ)
(?!\s).*\S не пустая строка исключающая пробелы в начале и в конце
\d* строка, допускающая только цифры
\d{5} строка из цифр длиной 5 символов
.{,10} строка не более 10 символов
\w{5,8} строка содержащая от 5 до 8 букв
(1|2|3) строка содержащая один из трёх вариантов цифр
^[0-9-+( ),]{0,58}$ поле для ввода номеров телефонов
^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$ телефонный номер
^[a-z0-9_-]{3,16}$ логин от 3 до 16 символов