RoryWong Brain Beats Brawn

获取字符串中的可能身份证号 并验证

<!DOCTYPE html>
<html >
<head>    
    <script>
        function myFunc1(input) {
            
            //var id18Pattern=/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/g;
            //var id15Pattern=/^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$/g;
            var id18Pattern=/[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]/g;
            var id15Pattern=/[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]/g;
            var result=input.match(id18Pattern)||input.match(id15Pattern);
            if(result)
            {    
                document.getElementById("output1").innerHTML="字符串包含的可能号码:<br>"
                for(var j = 0; j < result.length; j++) {
                    document.getElementById("output1").innerHTML += (result[j]);
                    var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "};
                    if(!city[result[j].substr(0,2)]){
                        document.getElementById("output1").innerHTML += ("   x"+'<br>');
                        break;
                    }
                    if(check(result[j]))
                    {
                        document.getElementById("output1").innerHTML += (""+'<br>');
                    }
                    else
                    {
                        document.getElementById("output1").innerHTML += ("   x"+'<br>');
                    }
                    
                }     
                
            }
            else
            {
                document.getElementById("output1").value = "请输入15或18位身份证号";
            }
            
        }
        
        function check(code){
            code = code.split('');
            //∑(ai×Wi)(mod 11)
            //加权因子
            var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
            //校验位
            var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
            var sum = 0;
            var ai = 0;
            var wi = 0;
            for (var i = 0; i < 17; i++)
            {
                ai = code[i];
                wi = factor[i];
                sum += ai * wi;
            }
            if(parity[sum % 11] != code[17]){
                return false;
            }
            return true;
        }
    </script>
</head>
<body>
    ID Number:<input id="input1" type="text" onchange="myFunc1(this.value)" />
    <br />
    <output id="output1"></output>
</body>
</html>

 

 

posted @ 2018-08-14 16:57  FerryYang  阅读(494)  评论(0编辑  收藏  举报