Формулировка проблемы: необходима возможность жёстко задавать формат вводимых в формы данных напрямую на этапе их ввода.
Решение: необходимо реализовать новую опцию «Маска ввода» для компонента форм «Однострочное поле»:
Маска ввода определяет, какие символы и сколько может быть введено в
«Однострочное поле». Общее количество символов, которое может быть
введено в поле, строго равно количеству символов маски ввода (за
исключением escape-символов \
).
Маска ввода представляет собой строку, состоящую из обычных символов (литералов) и метасимволов. Каждый метасимвол маски ввода определят класс символов, один из которых может быть введён в то место поля, где расположен метасимвол. Список поддерживаемых метасимволов:
A
— любая заглавная буква Unicode.
Соответствующее регулярное выражение:
[\p{Lu}]
a
— любая строчная буква Unicode.
Соответствующее регулярное выражение:
[\p{Ll}]
#
— любая цифра. Соответствующее регулярное
выражение: [0-9]
L
— любая заглавная буква латинского
алфавита. Соответствующее регулярное выражение:
[A-Z]
l
— любая строчная буква латинского алфавита.
Соответствующее регулярное выражение: [a-z]
*
— любой символ. Соответствующее регулярное
выражение: .
Для того, чтобы вставить в маску ввода метасимвол в качестве
литерала, необходимо предварить его escape-символом
\
(обратная косая черта). Для вставки косой
обратной черты как литерала необходимо использовать конструкцию
\\
(двойная обратная косая черта).
В «Однострочном поле» с активированной и настроенной «Маской ввода»
литералы отображаются как есть
, их нельзя
изменить или удалить. Метасимволы отображаются в виде
_
(подчёркивание). Вместо метасимволов можно
вводить только те символы, которые попадают в класс метасимвола.
Примеры:
(###) ###-##-##
— маска ввода для телефонного номера в Казахстане. Ей соответствуют такие номера, как (727) 333-47-47, (721) 394-03-42 и так далее.
LL## ** **** **** **** **
— маска ввода для IBAN (Казахстан).