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'

另请参阅 ​