zoukankan      html  css  js  c++  java
  • 身份证校验

    身份证校验
    
     
            function isChinaIDCard(StrNo) {
                StrNo = StrNo.toString()
                if (StrNo.length == 18) {
                    var a, b, c
                    if (!isInteger(StrNo.substr(0, 17))) { return false }
                    a = parseInt(StrNo.substr(0, 1)) * 7 + parseInt(StrNo.substr(1, 1)) * 9 + parseInt(StrNo.substr(2, 1)) * 10;
                    a = a + parseInt(StrNo.substr(3, 1)) * 5 + parseInt(StrNo.substr(4, 1)) * 8 + parseInt(StrNo.substr(5, 1)) * 4;
                    a = a + parseInt(StrNo.substr(6, 1)) * 2 + parseInt(StrNo.substr(7, 1)) * 1 + parseInt(StrNo.substr(8, 1)) * 6;
                    a = a + parseInt(StrNo.substr(9, 1)) * 3 + parseInt(StrNo.substr(10, 1)) * 7 + parseInt(StrNo.substr(11, 1)) * 9;
                    a = a + parseInt(StrNo.substr(12, 1)) * 10 + parseInt(StrNo.substr(13, 1)) * 5 + parseInt(StrNo.substr(14, 1)) * 8;
                    a = a + parseInt(StrNo.substr(15, 1)) * 4 + parseInt(StrNo.substr(16, 1)) * 2;
                    b = a % 11;
    
                    if (b == 2)   //最后一位为校验位  
                    {
                        c = StrNo.substr(17, 1).toUpperCase();   //转为大写X  
                    }
                    else {
                        c = parseInt(StrNo.substr(17, 1));
                    }
    
                    switch (b) {
                        case 0: if (c != 1) { alert("身份证好号码校验位错:最后一位应该为:1"); return false; } break;
                        case 1: if (c != 0) { alert("身份证好号码校验位错:最后一位应该为:0"); return false; } break;
                        case 2: if (c != "X") { alert("身份证好号码校验位错:最后一位应该为:X"); return false; } break;
                        case 3: if (c != 9) { alert("身份证好号码校验位错:最后一位应该为:9"); return false; } break;
                        case 4: if (c != 8) { alert("身份证好号码校验位错:最后一位应该为:8"); return false; } break;
                        case 5: if (c != 7) { alert("身份证好号码校验位错:最后一位应该为:7"); return false; } break;
                        case 6: if (c != 6) { alert("身份证好号码校验位错:最后一位应该为:6"); return false; } break;
                        case 7: if (c != 5) { alert("身份证好号码校验位错:最后一位应该为:5"); return false; } break;
                        case 8: if (c != 4) { alert("身份证好号码校验位错:最后一位应该为:4"); return false; } break;
                        case 9: if (c != 3) { alert("身份证好号码校验位错:最后一位应该为:3"); return false; } break;
                        case 10: if (c != 2) { alert("身份证好号码校验位错:最后一位应该为:2"); return false }
                    }
                }
                else if (StrNo.length == 15)   //15位身份证号  
                {
                    if (!isInteger(StrNo)) { alert("身份证号码错误,前15位不能含有英文字母!"); return false }
                }
                else {
                    alert("输入的身份证号码必须为15位或者18位!");
                    return false
                 }
                switch (StrNo.length-1) {
                    case 15:
                        if (isValidDate("19" + StrNo.substr(6, 2), StrNo.substr(8, 2), StrNo.substr(10, 2)))
                        { return true; }
                        else
                        { return false; }
                    case 18:
                        if (isValidDate(StrNo.substr(6, 4), StrNo.substr(10, 2), StrNo.substr(12, 2)))
                        { return true; }
                        else
                        { return false; }
                }
            }
    
            function isValidDate(iY, iM, iD) {
                var a = new Date(iY, iM, iD);
                var y = a.getFullYear();
                var m = a.getMonth();
                var d = a.getDate();
                if (y != iY || m != iM || d != iD) {
                    window.alert('身份证号码内日期错误!');
                    return false;
                }
                return true
            }
    
            function isInteger(str) {
                if (/[^\d]+$/.test(str)) {
                    return false;
                }
                return true;
            }
    
    
            function IDUpdate(StrNo) {
    
                if (!isChinaIDCard(StrNo)) { return false }
                if (StrNo.length == 15) {
                    var a, b, c
                    StrNo = StrNo.substr(0, 6) + "19" + StrNo.substr(6, 9)
                    a = parseInt(StrNo.substr(0, 1)) * 7 + parseInt(StrNo.substr(1, 1)) * 9 + parseInt(StrNo.substr(2, 1)) * 10;
                    a = a + parseInt(StrNo.substr(3, 1)) * 5 + parseInt(StrNo.substr(4, 1)) * 8 + parseInt(StrNo.substr(5, 1)) * 4;
                    a = a + parseInt(StrNo.substr(6, 1)) * 2 + parseInt(StrNo.substr(7, 1)) * 1 + parseInt(StrNo.substr(8, 1)) * 6;
                    a = a + parseInt(StrNo.substr(9, 1)) * 3 + parseInt(StrNo.substr(10, 1)) * 7 + parseInt(StrNo.substr(11, 1)) * 9;
                    a = a + parseInt(StrNo.substr(12, 1)) * 10 + parseInt(StrNo.substr(13, 1)) * 5 + parseInt(StrNo.substr(14, 1)) * 8;
                    a = a + parseInt(StrNo.substr(15, 1)) * 4 + parseInt(StrNo.substr(16, 1)) * 2;
                    b = a % 11;
    
                    switch (b) {
                        case 0: { StrNo = StrNo + "1"; } break;
                        case 1: { StrNo = StrNo + "0"; } break;
                        case 2: { StrNo = StrNo + "X"; } break;
                        case 3: { StrNo = StrNo + "9"; } break;
                        case 4: { StrNo = StrNo + "8"; } break;
                        case 5: { StrNo = StrNo + "7"; } break;
                        case 6: { StrNo = StrNo + "6"; } break;
                        case 7: { StrNo = StrNo + "5"; } break;
                        case 8: { StrNo = StrNo + "4"; } break;
                        case 9: { StrNo = StrNo + "3"; } break;
                        case 10: { StrNo = StrNo + "3"; }
                    }
                }
                return StrNo;
            }  
       
    
    


     

  • 相关阅读:
    Charles抓https请求详细步骤
    【转载】http proxy原理
    Mac使用笔记大全
    Android自动化之Monkey测试(二)
    Android自动化之Monkey环境搭建(一)
    解决删除镜像时image is referenced in multiple repositories
    SQL Injection-Http请求的参数中对特殊字符的处理
    Python 同一文件中,有unittest不执行“if __name__ == '__main__”,不生成HTMLTestRunner测试报告的解决方案
    Spring Boot-右键maven build成功但是直接运行main方法出错的解决方案
    maven+ssm项目环境搭建后测试404
  • 原文地址:https://www.cnblogs.com/happygx/p/2442476.html
Copyright © 2011-2022 走看看