Skip to content

统一校验 useValidator ​

useValidator() 统一校验规则库:手机号 / 座机 / 邮箱 / 网址 / IPv4 / IPv6 / 网段 / 邮编 / 身份证 / 银行卡 / 统一社会信用代码 / 车牌 / 数值 / 金额 / 百分比 / 长度 / 异步唯一性的规则构造器。每个构造器返回 FormItemRule[],可直接展开进 el-form 的 rules、BizFormDialog / BizStepsForm 字段的 rules——与库内输入组件(BizPhoneInput / BizIdCardInput 等)同一套口径,表单规则与组件校验不再两套正则。

身份证(GB 11643 校验位)、银行卡(Luhn)、统一社会信用代码(GB 32100-2015 校验位)为算法级校验,不是简单正则。

约定:空值放行,必填显式声明 ​

格式类规则默认空值放行(只校格式,不逼必填)——需要必填传 { required: true },自动叠加「必填 + 格式」两条规则,两种提示语互不干扰:

ts
const v = useValidator()
const rules = {
  phone: v.phone({ required: true, label: '手机号' }), // 空 →「请输入手机号」;格式错 →「手机号格式不正确」
  email: v.email(),                                    // 选填:空放行,填了才校格式
}

所有构造器通用选项:label(生成默认提示)、message(覆盖格式提示)、required / requiredMessage、trigger(默认 blur)。

规则试炼场 ​

✓ 格式正确

切换规则会自动带入一个合法样例(身份证校验位 / 银行卡 Luhn / 信用代码 GB 32100 均为算法级校验,非单纯正则)。

选一种规则即时验证输入值,直观看每个校验器的口径;切换规则自动带入合法样例。

基本信息表单 ​

姓名
手机号
邮箱
证件号
必填 + 格式组合(手机 / 邮箱),选填仅校格式(身份证 18 位校验位算法)。

企业认证表单 ​

企业名称
统一社会信用代码
公务车牌
注册地邮编
客服电话
统一社会信用代码(GB 32100 校验位)、车牌(燃油 5 位 / 新能源 6 位)、邮编、座机(可带区号 / 分机)。

网络参数录入 ​

主机地址
网关地址
IPv6
子网网段
IPv4 严格四段(每段 0-255)、IPv6(支持 :: 缩写)、CIDR 网段(掩码 0-32)。

异步唯一性校验 ​

用户名
昵称
v.unique(check) 生成 asyncValidator 规则:check 返回 Promise,resolve true 可用 / false 已占用;接口异常降级为「校验服务异常」提示。

数值类规则 ​

排序号
售价
折扣
商品标题
number(整数 / 范围)、amount(范围 + 小数位上限)、percentage(0-100)、length(字符区间)。

与 BizFormDialog 集成 ​

字段 rules 直接传构造器返回的数组(required: true 选项与字段自带 required 叠加不冲突)。

与 BizStepsForm 集成 ​

0
账号信息
登录凭据
0
企业信息
开票资质
用户名
手机号
分步表单每步只校当步字段,规则写法与单表单完全一致。

API ​

useValidator(): BizValidator ​

构造器口径默认提示
required(label?)必填请输入
phone()1[3-9] 开头 11 位手机号格式不正确
landline()可带区号 0592-1234567、分机 -123座机号格式不正确
email() / url()常规格式,url 限 http/https邮箱 / 网址格式不正确
ip() / ipv6() / cidr()IPv4 四段 0-255;IPv6 含 :: 缩写;网段 192.168.1.0/24IP 地址 / IPv6 地址 / 网段格式不正确
zipcode()6 位数字邮政编码格式不正确
idCard()18 位校验位算法(权重模 11),兼容 15 位旧证,校验省份码与月日身份证号格式不正确
bankCard()12-19 位(忽略空格)+ Luhn银行卡号格式不正确
creditCode()18 位 GB 32100-2015 校验位(31 字符集 + 指定权重)统一社会信用代码格式不正确
plate()省份汉字 + 字母 + 5 位,新能源 6 位(D/F 结尾)车牌号格式不正确
number({integer,min,max})数字 / 整数 / 范围数值必须是数字 / 整数 / 不能小于 x…
amount({min,max,precision})数值范围 + 小数位上限(默认 2 位)金额最多保留 n 位小数…
percentage()0 ~ 100百分比不能小于 0 / 大于 100
length({min,max})字符数区间不能少于 / 超过 n 个字符
unique(check)异步查重:check(value) => Promise<boolean>{label}已被占用

纯函数与正则(表单外即时判断) ​

isPhone / isLandline / isEmail / isUrl / isIp / isIpv6 / isCidr / isZipcode / isIdCard / isBankCard / isCreditCode / isPlate 与规则构造器同一套口径;BIZ_PATTERNS 暴露简单格式的原始正则(phone / landline / email / url / zipcode)。

行为要点 ​

  • 空值放行:格式规则遇空值直接通过,必填交由 required 选项追加的规则——空值不会同时弹两条错误;
  • 自动 trim:所有校验对输入值做 trim 后判定(银行卡额外忽略空格);
  • trigger 默认 blur:选择类字段可传 { trigger: 'change' };
  • 异步规则容错:unique 的 check 抛异常时提示「校验服务异常,请稍后重试」,不白屏不卡 loading。