Skip to content

createMask ​

Создаёт маску по шаблону. Строку или массив можно передавать прямо в mask и attach — createMask нужен для своих токенов, подготовки ввода и своего значения без маски.

Сигнатура ​

ts
function createMask(options: MaskOptions | string | string[]): Mask

interface MaskOptions {
  pattern: string | string[] | ((input: string) => string);
  tokens?: Record<string, { pattern: RegExp; transform?: 'upper' | 'lower' | ((char: string) => string) }>;
  prepare?: (input: string) => string;
  allow?: (raw: string, char: string) => boolean;
  validate?: (result: MaskResult) => boolean;
  output?: (result: MaskResult) => string;
}
ОпцияОписание
patternШаблон, массив шаблонов (берётся первый подходящий) или функция от ввода — см. Шаблоны
tokensСвои токены в дополнение к 9, a, *
prepareПодготовка ввода перед форматированием — например, 8 → +7 в начале телефона
allowМожно ли принять символ, учитывая уже введённое (raw). Так маски дат не пропускают 32-е число
validateПравильно ли заполненное значение — результат попадает в valid и isValid. Вызывается, только когда маска заполнена
outputЗначение без маски. По умолчанию — введённые символы без литералов (result.raw)

MaskResult — { value, raw, complete, slots, overflow }: отформатированное значение, введённые символы, заполнена ли маска, позиции введённых символов, остались ли лишние символы.

Пример ​

ts
// order number: 2 letters + 6 digits, stored without the dash
const orderNumber = createMask({
  pattern: 'LL-999999',
  tokens: { L: { pattern: /[a-z]/i, transform: 'upper' } },
});

mask('ab123456', orderNumber);   // 'AB-123456'
unmask('AB-123456', orderNumber); // 'AB123456'

См. также ​