当前位置:   article > 正文

前端校验身份证,身份证号信息校验规则_前端识别身份证信息

前端识别身份证信息

 

  1. 第一部分是定义了一个函数 validateIdnumber,该函数接受三个参数:rulevaluecallback,其中value为需要验证的身份证号码。

  2. 接着是对输入的身份证号码进行各种校验:

    • 首先定义了一个正则表达式 format,用于检查身份证号码的格式是否符合规定。
    • 然后提取身份证号码中的年、月、日信息,并将其转换为时间戳。
    • 接着定义了两个数组 c 和 b,分别存储了系数和校验码对照表。
    • 计算身份证号码前17位数字与相应系数的乘积之和 sum
  3. 在校验部分,根据不同情况调用回调函数 callback 并传递相应的错误信息:

    • 如果身份证号码不符合规则,则返回错误提示 '身份证号码不合规'。
    • 如果出生日期不合规(超过当前日期或者日期超过当月天数),则返回错误提示 '出生日期不合规'。
    • 如果身份证校验码不正确,则返回错误提示 '身份证校验码不合规'。
    • 如果身份证号码为空,则返回错误提示 '请填写身份证号'。
    • 如果以上情况都没有问题,则调用 callback 函数而不传递任何参数,表示验证通过。
  1.     const validateIdnumber = (rule, value, callback) => {
  2.       if (value) {
  3.         // 1 "验证通过!", 0 //校验不通过 // id为身份证号码
  4.         // 号码规则校验
  5.         var format =
  6.           /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/
  7.         // 区位码校验
  8.         // 出生年月日校验  前正则限制起始年份为1900;
  9.         const year = value.substr(6, 4) // 身份证年
  10.         const month = value.substr(10, 2) // 身份证月
  11.         const date = value.substr(12, 2) // 身份证日
  12.         const time = Date.parse(month + '-' + date + '-' + year) // 身份证日期时间戳date
  13.         const nowTime = Date.parse(new Date()) // 当前时间戳
  14.         const dates = new Date(year, month, 0).getDate() // 身份证当月天数
  15.         // 校验码判断
  16.         var c = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] // 系数
  17.         var b = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] // 校验码对照表
  18.         var idArray = value.split('')
  19.         var sum = 0
  20.         for (var k = 0; k < 17; k++) {
  21.           sum += parseInt(idArray[k]) * parseInt(c[k])
  22.         }
  23.         if (!format.test(value)) {
  24.           // 号码规则校验
  25.           callback(new Error('身份证号码不合规'))
  26.         } else if (time > nowTime || date > dates) {
  27.           // 出生年月日校验  前正则限制起始年份为1900;
  28.           callback(new Error('出生日期不合规'))
  29.         } else if (idArray[17].toUpperCase() !== b[sum % 11].toUpperCase()) {
  30.           // 校验码判断
  31.           callback(new Error('身份证校验码不合规'))
  32.         } else {
  33.           callback()
  34.         }
  35.       } else {
  36.         callback(new Error('请填写身份证号'))
  37.       }
  38.     }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/933657
推荐阅读
相关标签
  

闽ICP备14008679号