В библиотеке Inputmask специальные символы формируют основу описания структуры вводимых данных. Они определяют допустимые классы символов, поведение курсора, обязательность ввода и правила форматирования. Маска воспринимается не как обычная строка, а как набор инструкций, где каждый символ может иметь семантическое значение.
Ключевые базовые символы:
9 — обязательная цифра (0–9)a — обязательная буква (A–Z, a–z)* — обязательный алфавитно-цифровой символ[] — необязательные группы символов{} — квантификаторы повторений (в расширенных
режимах)\ — символ экранированияЭти элементы формируют синтаксический каркас большинства масок.
9Символ 9 используется для обозначения строго числового
ввода:
9 соответствует одной позицииПример маски:
9999
Такая маска ограничивает ввод четырьмя цифрами.
aСимвол a задаёт буквенный ввод:
Пример:
aaaa
Используется в кодах, идентификаторах, простых текстовых полях.
*Символ * объединяет возможности 9 и
a:
Пример:
****-****
Любые символы, не являющиеся управляющими, рассматриваются как литералы. Они отображаются в поле ввода и становятся частью фиксированной структуры.
Пример:
+7 (999) 999-99-99
В данном случае:
+, (, ), - —
литералы9 — динамические позиции вводаInputmask автоматически фиксирует позицию курсора так, чтобы литералы не могли быть удалены обычным вводом.
В масках часто возникает конфликт между символами данных и
управляющими конструкциями. Для разрешения используется обратный слэш
\.
\9 → литерал "9"
\a → литерал "a"
\* → литерал "*"
Экранирование отменяет специальное значение символа.
Некоторые символы имеют синтаксическое значение и требуют обязательного экранирования:
[ и ]{ и }( и )|, ?, +, *Пример:
\[999\]
Результат: отображается как [123], где цифры вводятся
пользователем.
Конструкция [] используется для задания необязательных
частей маски.
Пример:
9999[-999]
Здесь:
Inputmask поддерживает сложные конструкции:
(999)[-aaa]
Такая структура используется для гибких идентификаторов.
Inputmask позволяет переопределять поведение символов через объект
definitions.
Inputmask({
mask: "##-##",
definitions: {
"#": {
validator: "[A-F0-9]",
cardinality: 1
}
}
}).mask(element);
Каждое определение включает:
validator — правило допустимых символовcardinality — количество символов на позициюcasing — преобразование регистра (опционально)Можно модифицировать поведение 9, a,
*, но это редко применяется, так как нарушает ожидаемую
семантику.
Хотя Inputmask не является полноценным движком регулярных выражений,
он поддерживает их элементы через definitions.
mask: "999-AAA"
definitions: {
A: { validator: "[A-Z]" }
}
Пробелы могут вести себя как:
Пример:
999 999 999
Часто используются:
-./:Они не требуют экранирования и интерпретируются как фиксированные символы.
Inputmask работает с Unicode-символами, однако поведение зависит от типа маски:
a может ограничиваться латиницей в стандартной
конфигурацииdefinitionsПример:
definitions: {
"c": { validator: "[А-Яа-яЁё]" }
}
(999)
Может интерпретироваться как группа, а не как литерал, если не настроено явно.
Использование символов 9, a, *
в качестве литералов без экранирования приводит к:
Ошибочные конструкции:
[999
999]
Ведут к нарушению структуры маски и игнорированию части правил.
Чрезмерное использование \:
\\9
может привести к тому, что символ будет интерпретирован буквально, а не как управляющий элемент.