JS验证身份证号码

楼主
我是社区第135899位番薯,欢迎点我头像关注我哦~
--E5单元格填写身份证号码,规则写长度18,其他校验结果以true/false形式写在F5单元格,F列隐藏
--填报属性-数据校验填写【 len(E5)> 0 && (len(F5) = 0 || F5 = "true") 】, 判断len(E5)> 0是为了校验错误后可以有警告标识符

--E5编辑结束事件:

var checkCode = function (val) {
    var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; //不以0开头,年份为19世纪至今,12个月31天粗略校验,P共17位
    var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]; //身份证号前17位数字加权求和的权数
    var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];//除以11后求余数,验证第18位
    var code = val.substring(17);
    if(p.test(val)) {
        var sum = 0;
        for(var i=0;i<17;i++) {
            sum += val[i]*factor[i];
        }
        if(parity[sum % 11] == code.toUpperCase()) {
            return true;
        }
    }
    return false;
}

var a = this.getValue();
var aa = checkCode(a);
contentPane.setCellValue(5,4,aa);


分享扩散:

沙发
发表于 2020-6-16 15:14:11
凡是分享干货的,都值得关注

我是楼主的第一个粉丝
板凳
发表于 2020-6-20 14:04:37
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表