跳转到内容

输入掩码 InputMask

InputMask 适合日期、编号、版本号、网络地址等具有可辨识输入结构的字段。它复用 Input 的尺寸、禁用、只读、清除、错误态、前后缀、字数统计和表单联动能力。

掩码只负责限制输入过程中的字符与结构,不等于业务校验。比如 preset="ipv4" 会阻止单段超过 255 并限制为四段,但提交前仍应使用表单规则判断值是否完整有效。

字符串 mask 会自动插入普通字符。默认 9 表示数字;将 mask-char 设为 null 可隐藏尚未填写的位置。

默认 token 同时支持数字、英文、汉字和 Unicode 字母。复杂场景可以传入由字面量和 RegExp 组成的数组,每个正则表达式对应一个可编辑位置。

Token 含义 默认规则
9 数字 [0-9]
a 英文字母 [A-Za-z]
* 英文或数字 [A-Za-z0-9]
H 汉字 \p{Script=Han}
L 任意 Unicode 字母 \p{Letter}
N 任意 Unicode 字母或数字 [\p{Letter}\p{Number}]

若要把 token 字符作为固定文本,使用反斜杠转义,例如 \9 表示固定字符 9format-chars 可以覆盖或增加单字符 token。

preset 提供常见结构化格式的开箱即用输入规则。下面的示例展示全部内置模板,每一项都可以直接编辑和清除。IPv4、URL 和 SemVer 等格式支持变长片段,不会被强制成不真实的固定长度。

分类 内置模板
日期时间 datetimedatetimerfc3339
网络地址 ipipv4ipv6ip-rangeurlfqdnemail
开发格式 semveruuidjwtmime-typedata-urimailto-urimagnet-uri
标识与编码 imeiissnisrciso6346iban
颜色与坐标 hex-colorrgb-colorhsllat-longmac-address

组件使用标准 v-model。切换 presetmask 时会按新模板重新整理当前值;清除、焦点、回车和变更事件保持与 Input 一致。

前缀、后缀、前置标签和后置标签插槽会直接交给内部 Input。下面用前后缀补充版本号语义。

除下表外,还支持 Inputsizeallow-cleardisabledreadonlyerrorplaceholderfit-widthmax-w-fullword-lengthword-sliceinput-attrsprependappend

参数名 描述 类型 默认值
model-value / v-model 当前掩码值 string -
default-value 非受控默认值 string ''
mask 固定位置掩码;优先级高于 preset string | readonly (string | RegExp)[] -
preset 内置格式模板 InputMaskPresetName -
mask-char 固定掩码中未填写位置的字符;null 表示隐藏 string | null '_'
format-chars 字符串 mask 的自定义 token Readonly<Record<string, RegExp>> 内置六类 token
always-show-mask 空值且未聚焦时仍显示固定掩码 boolean false
before-masked-value-change 提交前纯函数调整值与选区 (nextState, previousState) => InputMaskState -

同时传入 maskpreset 时,使用 mask 的位置结构,并复用 preset 的提示和 inputmode。通常只需选择其中一种。