Формулировка проблемы: необходима возможность жёстко задавать формат вводимых в формы данных напрямую на этапе их ввода.
Решение: необходимо реализовать новую опцию «Маска ввода» для компонента форм «Однострочное поле»:
Маска ввода определяет, какие символы и сколько может быть введено в
«Однострочное поле». Общее количество символов, которое может быть
введено в поле, строго равно количеству символов маски ввода (за
исключением 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 (Казахстан).