狐表和前端Js校检身份证正确性

发表日期: 2021-10-22

1.js前端校检

//检查身份证是否正确,正确返回true,错误返回false
ValidPIN(value) {
    const weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
    // 校验码
    const check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
    let code = value + ""
    let last = value[17] //最后一位
    let seventeen = code.substring(0, 17)
    // ISO 7064:1983.MOD 11-2
    // 判断最后一位校验码是否正确
    let arr = seventeen.split("")
    let len = arr.length
    let num = 0
    for (let i = 0; i < len; i++) {
        num = num + arr[i] * weight_factor[i]
    }
    // 获取余数
    let resisue = num % 11
    let last_no = check_code[resisue]
    // 格式的正则
    // 正则思路
    /*
    第一位不可能是0
    第二位到第六位可以是0-9
    第七位到第十位是年份,所以七八位为19或者20
    十一位和十二位是月份,这两位是01-12之间的数值
    十三位和十四位是日期,是从01-31之间的数值
    十五,十六,十七都是数字0-9
    十八位可能是数字0-9,也可能是X
    */
    let idcard_patter =
        /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[Xx])$/
    // 判断格式是否正确
    let format = idcard_patter.test(value)
    // 返回验证结果,校验码和格式同时正确才算是合法的身份证号码
    return (last === last_no && format) 
}

2.后端校检

狐表直接有ValidPIN(身份证),不用自己折腾



随便看看

Copyright © 2016-2022 江门蓬江区华越科技公司 版权所有 | 承接软件定制开发,欢迎联系
粤ICP备17073215号