Группировка в масках Inputmask строится вокруг идеи логического объединения символов в единый атом ввода, который можно повторять, делать опциональным или комбинировать с альтернативными вариантами. Базовый механизм опирается на скобочные выражения, квантификаторы и внутренние правила разбора шаблона, где каждая группа рассматривается как самостоятельный блок синхронизации курсора и валидации.
Скобки используются для формирования атомарных сегментов маски, внутри которых действует локальная логика сопоставления символов. Например, телефонный формат:
(999) 999-9999
В данном случае (999) не является регулярным выражением,
но воспринимается как единый блок, обеспечивающий согласованное
поведение ввода: курсор перемещается внутри группы до её завершения,
после чего переходит к следующему сегменту.
Группировка влияет на:
Группы могут быть связаны с количественными ограничениями, что позволяет задавать повторяющиеся структуры фиксированной или переменной длины. Пример:
(999){2}
Такое выражение интерпретируется как повторение блока из трёх цифр два раза подряд. На уровне механизма маски это эквивалентно разворачиванию структуры в последовательность, но логически сохраняется как единый повторяемый элемент.
Расширенный вариант:
(aa-999){3}
Здесь каждая итерация группы включает комбинацию буквенного и числового сегментов, что позволяет описывать серийные коды и составные идентификаторы.
Квантификаторы применяются к целой группе, а не к отдельному символу внутри неё, что критично для корректного построения сложных масок.
Опциональность в Inputmask реализуется через специальные конструкции, позволяющие группе существовать в двух состояниях: активном и пропущенном. В простейшем случае:
(999)?999
Первая группа может быть заполнена или пропущена, при этом оставшаяся часть маски сохраняет корректную структуру.
Опциональные группы влияют на:
При комбинировании с квантификаторами опциональные блоки позволяют строить переменные форматы, например номера с необязательным кодом региона или расширением.
Механизм альтернатив в Inputmask реализуется через разделение возможных шаблонов внутри одной маски. Это позволяет одному полю поддерживать несколько форматов ввода.
Классический вариант:
(999-999|9999-9999)
Здесь ввод может соответствовать либо одному, либо другому формату. Внутренний механизм анализирует входящие символы и динамически выбирает подходящую ветку.
Альтернативы используются для:
Более сложная структура:
(99-999|AAA-999|999999)
В этом случае маска поддерживает три варианта структуры, каждый из которых проверяется независимо.
Вложенные группы позволяют строить иерархические структуры масок, где один логический блок содержит внутри себя другие блоки. Пример:
(+9(999)999-99-99)
Здесь внешний блок определяет международный код, а внутренняя группа
(999) отделяет код оператора. Вложенность влияет на
синхронизацию курсора: переход внутри вложенной группы не нарушает
целостность внешней структуры.
Вложенные группы особенно полезны при построении:
Inputmask позволяет совмещать группировку с кастомными символами, определёнными через definitions. Это создаёт гибридные структуры:
(aa-999){2}
где a может быть переопределён как любой набор символов,
например кириллица или ограниченный алфавит.
При этом вся группа сохраняет единое поведение, а кастомные определения применяются локально внутри блока.
Группировка напрямую влияет на алгоритм позиционирования курсора. Основные правила:
Особенно важно поведение при частичном вводе альтернатив: система пересчитывает активную ветку, основываясь на уже введённых символах.
При использовании сложных группировок проявляются характерные особенности механизма маскирования:
Жадность заполнения групп Некоторые группы стремятся заполняться полностью до перехода к следующему сегменту, что влияет на UX при вводе переменной длины.
Конфликт альтернатив Если альтернативные ветки
пересекаются по шаблону (например, 999 и
99-9), Inputmask может переключать ветку в процессе ввода,
что приводит к «перепрыгиванию» формата.
Стабильность при удалении Удаление символов внутри группы может привести к перерасчёту всей структуры маски, особенно при вложенных и альтернативных блоках.
Синхронизация повторяющихся групп Повторяемые группы пересчитываются как единое целое, что может влиять на позицию курсора при быстром вводе.
Наиболее сложные маски объединяют все механизмы:
(+7|8)(999){2,3}-(aaa|999)-99
Такая структура одновременно использует:
Подобные конструкции требуют строгой согласованности правил ввода, поскольку каждая часть влияет на динамическое формирование итогового значения.
Группировка и альтернативы в Inputmask формируют основу для построения адаптивных масок, способных описывать как строго фиксированные форматы, так и гибридные структуры с несколькими допустимыми вариантами ввода.