动态校验自定义指令

动态校验自定义指令

实例

/**
 * 是否身份证号码
 * @date 2023-6-17
 * @author gmy
 * @param {any} rule
 * @param {any} value
 * @param {any} callback
 * @returns {any}
 */
export function validateIdNo(rule, value, callback) {
  // const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  const reg = /^[1-9]\d{5}(18|19|20)\d{2}(0\d|1[0-2])([0-2]\d|3[01])\d{3}(\d|X)$/
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('请输入正确的身份证号码'))
    } else {
      // 校验身份证号码的校验码
      const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
      let checkSum = 0;
      for (let i = 0; i < 17; i++) {
        checkSum += parseInt(value.toString().charAt(i)) * factor[i];
      }
      var remainder = checkSum % 11;
      var checkDigit = '10X98765432';
      if (value.toString().charAt(17) !== checkDigit.charAt(remainder)) {
        callback(new Error('请输入正确的身份证号码'))
      }
      callback()
    }
  }
}
/***
 * 电话号和固话校验
 * @author gmy
 * @param {any} rule
 * @param {any} value
 * @param {any} callback
 * @returns {any}
 */
// 
export function checkTelPhone(rule, value, callback) {
  const reg1 = /^1([38][0-9]|4[014-9]|[59][0-35-9]|6[2567]|7[0-8])\d{8}$/;
  const reg2 = /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/;
  if (value === "" || !value) {
    callback();
  } else {
    if (reg1.test(value) || reg2.test(value)) {
      callback();
    } else {
      callback(new Error("请输入正确的电话或固话"));
    }
  }
}
/***
 * 户口薄
 * @author gmy
 * @param {any} rule
 * @param {any} value
 * @param {any} callback
 * @returns {any}
 */
export function checkHKBCard(rule, value, callback) {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  if (value === "" || !value) {
    callback();
  } else {
    if (reg.test(value)) {
      callback();
    } else {
      callback(new Error("请输入正确的户口薄号码"));
    }
  }
}

方法调用

  • 引用
import { validateIdNo } from "@/utils/validate";

validateIdNo:[{ required: true, validator: validateIdNo, trigger: "blur" }]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值