Синтаксис масок в Inputmask строится вокруг строки-шаблона, в которой комбинируются специальные символы, литералы и управляющие конструкции. Маска определяет допустимую структуру ввода, ограничивая набор символов и их порядок без необходимости ручной валидации.
Базовая идея заключается в том, что каждый символ маски либо задаёт правило для ввода, либо фиксирует конкретное значение.
В стандартной конфигурации Inputmask используются предопределённые метасимволы:
9 — обязательная цифра (0–9)a — обязательная буква (A–Z, a–z)* — обязательный алфавитно-цифровой символ[ и ] — обозначение необязательных частей
маски{} — квантификатор повторения| — альтернативные варианты маски (в некоторых
режимах)Эти символы формируют основу большинства масок.
Пример простой маски:
"99/99/9999"
Ввод строго соответствует структуре даты: две цифры, разделитель, две цифры, разделитель, четыре цифры.
Любые символы, не являющиеся управляющими, воспринимаются как литералы. Они отображаются в поле ввода как фиксированные элементы и не подлежат редактированию.
Пример:
"+7 (999) 999-99-99"
Здесь +, пробелы, скобки и дефисы являются частью
формата и не заменяются вводом пользователя.
Для явного задания литерала используется экранирование:
"\\9\\9-999"
В этом случае символы 9 воспринимаются как обычные
символы, а не как масочные токены.
Необязательные сегменты задаются квадратными скобками. Они позволяют формировать переменную структуру ввода.
Пример:
"+7 (999) 999-99-99[ доб. 999]"
Часть с добавочным номером вводится только при необходимости, иначе игнорируется.
Вложенные необязательные блоки также допустимы:
"9{1,3}[.9{1,2}]"
Фигурные скобки задают количество повторений символа или группы:
{n} — ровно n повторений{n,m} — диапазон повторений от n до m{n,} — неограниченное количество начиная с nПример:
"a{3}"
Строго три буквы.
"9{1,3}"
От одной до трёх цифр.
Квантификаторы могут комбинироваться с другими токенами:
"[9]{1,5}"
Inputmask поддерживает расширение набора символов через объект
definitions. Это позволяет вводить собственные правила в
дополнение к стандартным 9, a,
*.
Пример расширения:
Inputmask({
mask: "#-###",
definitions: {
"#": {
validator: "[A-F0-9]",
casing: "upper"
}
}
}).mask(element);
В этом случае символ # принимает значения
шестнадцатеричного диапазона.
Синтаксис определения включает:
validator — регулярное выражение или функция
проверкиcardinality — количество символовcasing — преобразование регистраВместо строкового шаблона может использоваться регулярное выражение. Такой подход применяется для сложных форматов, где линейная маска недостаточна.
Пример:
Inputmask(/^\d{3}-\d{2}-\d{4}$/).mask(element);
Регулярное выражение полностью заменяет синтаксис маски, обеспечивая контроль через стандартный regex-движок.
Особенность заключается в том, что поведение становится строго валидирующим, без поэтапного маскирования ввода.
Символ | используется для задания нескольких допустимых
форматов в одной маске.
Пример:
"(999) 999-9999|+99 999 999 999"
Такой синтаксис позволяет одному полю принимать несколько структур ввода.
При обработке Inputmask выбирает подходящий вариант в зависимости от вводимых данных.
Некоторые символы имеют специальное значение в синтаксисе и требуют экранирования:
9, a, * — масочные
токены[ ] — необязательные блоки{} — квантификаторы| — альтернативыДля их использования как литералов применяется обратный слеш:
"\\9\\a\\*"
Это переводит управляющие символы в режим обычного текста.
Маска состоит из двух типов сегментов:
Пример:
"+7 (999) 999-99-99"
Здесь +7, скобки и дефисы статичны, а цифры в
9 динамичны.
Сочетание типов позволяет формировать строгие форматы без потери гибкости ввода.
Некоторые символы маски взаимодействуют с настройками поведения:
placeholder влияет на отображение незаполненных
позицийgreedy управляет жадностью заполнения при повторяющихся
шаблонахkeepStatic влияет на выбор варианта маски при
альтернативных формахХотя эти параметры задаются вне строки маски, они напрямую влияют на интерпретацию синтаксиса.
Реальные маски редко состоят из одного типа конструкции. Обычно используется комбинация всех механизмов:
"+7 (999) 999-99-99[ x9999]"
Здесь присутствуют:
+, скобки, дефисы)9)[ x9999])Такая композиция позволяет описывать сложные форматы данных без внешней логики обработки.