vue 表单校验工具

规则说明

方法作用
required: true表示必填项
message校验失败时显示的提示信息
validator自定义校验函数
trigger触发校验的事件类型(通常用 blur 或 change

trigger 事件类型

1. blur

  • 当元素失去焦点时触发。这是最常见的触发方式之一,适合用于输入框内容的校验。

    { required: true, message: '请输入内容', trigger: 'blur' }

2. change

  • 当元素的值发生改变时触发。对于下拉菜单、复选框等组件非常有用。

    { required: true, message: '请选择一项', trigger: 'change' }

3. input

  • 对于一些实时校验的需求,比如用户每输入一个字符就进行一次校验,可以使用 input 事件。这通常用于即时反馈用户输入是否符合要求

    { validator: validateInput, trigger: 'input' }

4. 多个事件类型组合

  • 可以同时指定多个事件类型来触发校验,通过数组的方式定义。

    { required: true, message: '请输入有效信息', trigger: ['blur', 'change'] }

其他的具体校验(正则)

电话
phone: [
    { required: true, message: '电话不能为空', trigger: 'blur' },
    { validator: validatePhone, trigger: 'blur' }
  ],
const validatePhone = (rule, value, callback) => {
  const reg = /^1[3-9]\d{9}$/
  if (!reg.test(value)) {
    callback(new Error('请输入11位有效手机号'))
  } else {
    callback()
  }
}
身份证
idcard: [
    { required: true, message: '身份证不能为空', trigger: 'blur' },
    { validator: validateIdCard, trigger: 'blur' }
  ],

const validateIdCard = (rule, value, callback) => {
  const reg = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/
  if (!reg.test(value)) {
    callback(new Error('请输入有效的18位身份证号'))
  } else {
    callback()
  }
}
姓名
name: [
    { required: true, message: '姓名不能为空', trigger: 'blur' },
    { validator: validateName, trigger: 'blur' }
  ],

const validateName = (rule, value, callback) => {
  const reg = /^[\u4e00-\u9fa5]{1,4}$/
  if (!reg.test(value)) {
    callback(new Error('姓名必须为1~4个汉字'))
  } else {
    callback()
  }
}
编号
number: [
    { required: true, message: '编号不能为空', trigger: 'blur' },
    { validator: validateNumber, trigger: 'blur' }
  ]
const validateNumber = (rule, value, callback) => {
  const reg = /^\d{12}$/
  if (!reg.test(value)) {
    callback(new Error('编号必须为12位数字'))
  } else {
    callback()
  }
}
强密码:包含英文大小写,数字和特殊字符,并且大于等于9位
const isValidPassword=(password)=> {
  const reg = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*]).{9,}$/;
  return reg.test(password);
}

 后续再加!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值