Встроенные символы-определители в Inputmask формируют основу декларативного описания маски ввода. Именно они задают правила интерпретации каждого символа строки маски, превращая обычную последовательность символов в строгий шаблон проверки пользовательского ввода. Логика работы строится вокруг заранее определённых токенов, каждый из которых соответствует определённому классу допустимых значений.
Маска в Inputmask представляет собой строку, где каждый символ либо является литералом (фиксированным знаком), либо специальным определителем. При вводе данных библиотека сопоставляет вводимые символы с этими определителями и принимает или отклоняет ввод в зависимости от соответствия.
Ключевая особенность встроенных символов заключается в их предсказуемости: одинаковый символ всегда означает одинаковое правило проверки, независимо от контекста маски.
9Символ 9 используется для обозначения обязательной
позиции, допускающей только цифры от 0 до 9.
Поведение:
Пример маски:
Inputmask("9999").mask("input");
Такой шаблон ограничивает ввод четырьмя цифрами.
Практическое применение:
При вводе значения 12a4 третий символ будет отклонён,
так как не соответствует числовому диапазону.
aСимвол a задаёт позицию, принимающую только буквенные
символы латинского или локализованного алфавита (в зависимости от
конфигурации и расширений).
Поведение:
Пример:
Inputmask("aaaa").mask("input");
Используется для:
Ввод AB12 приведёт к тому, что символы 1 и
2 будут отклонены.
*Символ * представляет наиболее гибкое правило. Он
допускает ввод практически любого символа.
Поведение:
Пример:
Inputmask("****").mask("input");
Применение:
Особенность заключается в том, что * снимает структурные
ограничения на конкретной позиции, оставляя только контроль длины
маски.
Любой символ, не являющийся встроенным определителем, трактуется как литерал. Он становится частью обязательного шаблона ввода.
Пример:
Inputmask("99-99").mask("input");
Здесь дефис - не интерпретируется как правило, а
фиксируется в структуре строки.
Особенности:
Если необходимо использовать символ, который совпадает с
определителем, применяется экранирование обратным слешем
\.
Пример:
Inputmask("\\9\\9").mask("input");
В этом случае символ 9 перестаёт быть правилом и
воспринимается как обычный текст.
Сценарии применения:
?Символ ? управляет необязательностью предыдущего
элемента маски. Он не создаёт самостоятельную позицию, а изменяет
поведение предшествующего токена.
Пример:
Inputmask("(99)?").mask("input");
Поведение:
? становится
необязательнойПрактическое применение:
Хотя встроенные символы определяют единичные позиции, они могут комбинироваться с группировкой и повторением.
Пример:
Inputmask("9{3}-9{2}-9{4}").mask("input");
Здесь:
9{3} означает три цифры подряд9{2} — две цифры9{4} — четыре цифрыТакая конструкция расширяет базовую модель символов, превращая их в масштабируемые блоки.
В одной строке маски могут комбинироваться разные определители, формируя сложную структуру ввода.
Пример:
Inputmask("aa-9999-*").mask("input");
Логика:
aa — буквенный префикс9999 — числовой блок* — завершающий свободный символТакие комбинации позволяют строить гибкие форматы данных без необходимости ручной валидации.
Inputmask обрабатывает строку маски последовательно, слева направо. При этом действует строгая иерархия:
\)9, a,
*)?, {n})Такая структура обеспечивает предсказуемость поведения при сложных масках, исключая неоднозначность интерпретации.
Хотя базовый набор ограничен, встроенные определители могут
расширяться через конфигурацию definitions.
Пример расширения:
Inputmask.extendDefinitions({
'#': {
validator: "[A-F0-9]",
cardinality: 1
}
});
После этого символ # начинает вести себя как новый
определитель, совместимый с существующей системой.
Поведение встроенных определителей может изменяться в зависимости от режима работы Inputmask:
Например, в режиме перезаписи (overwrite) символ
9 не только ограничивает ввод цифрами, но и определяет
логику замещения существующего значения.
Если маска содержит обязательные определители (9,
a), а ввод не завершён, Inputmask сохраняет структуру, но
помечает значение как незавершённое.
Пример:
Inputmask("9999").mask("input");
При вводе 12 маска остаётся активной, ожидая заполнения
оставшихся позиций.
Несмотря на универсальность, встроенные определители имеют ряд ограничений:
Для более сложных сценариев требуется комбинирование с пользовательскими валидаторами или расширениями definitions.
Встроенные символы часто используются вместе с форматирующими элементами, создавая визуально структурированные поля.
Пример:
Inputmask("+7 (999) 999-99-99").mask("input");
Здесь:
9 определяет цифровые позиции7 являются фиксированным префиксомТакой подход обеспечивает одновременную валидацию и форматирование.
Встроенные определители являются фундаментом всей системы масок. Они определяют:
Любая сложная маска в конечном итоге сводится к комбинации этих базовых элементов, что делает их центральным механизмом библиотеки.