JS校验身份证号码

首先,校验的规则附上

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>校验</title>
    <script>
    var checkNumber=new Array('7','9','10','5','8','4','2','1','6','3','7','9','10','5','8','4','2');
    var checkNumber2=new Array('1','0','X','9','8','7','6','5','4','3','2');
    var ele=new Array();
    function replaceStrings(sourceString,changeString,afterChangeString)
    {
       var pkchar=changeString;
       var str=sourceString;
       var afstr=afterChangeString;
       var reg=new RegExp("("+pkchar+")","g");
       var newstr=str.replace(reg,afstr);
       return newstr;

    }

    function showWrongString(sourceString,changeString)
    {
        var pkchar=changeString;
        var str=sourceString;
        var reg=new RegExp("("+pkchar+")","g");
        var newstr=str.replace(reg,"<p><font color=red>$1</font></p>");
        return newstr;
    }

    function changetest()
    { var allNewString=replaceStrings(document.getElementById('practice').value,rtString,document.getElementById("getnumber").value);
            document.getElementById("practice").value=allNewString;
        
            alert("已修改");

    }
    function test()
    {
        window.rtString='';
    var ele=document.getElementById('practice').value.split(",");
    var checkn=true;
    for(i=0;i<ele.length;i++)
    {
        if(/^[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]$/.test(ele[i])===false)
        {
            alert("第"+i+"条"+ele[i]+"不符合基本规则");
            checkn=false;
            document.getElementById("getnumber").value=ele[i];
            var allNewString=replaceStrings(document.getElementById('practice').value,rtString,document.getElementById("getnumber").value);
            var like=showWrongString(document.getElementById('practice').value,ele[i]);
            document.getElementById("getthe").innerHTML=like;
           
            break;

        }
        else
        {
            var elecheck=ele[i].split('');
            var sumall=0;
            var sum=0;
            var load=0;
            for(j=0;j<elecheck.length-1;j++)
            {
              sum=checkNumber[j]*elecheck[j]+sum;
            }
            load=sum%11;
            if(elecheck[17]=='x')
            {
                elecheck[17]='X';
            }
            if(checkNumber2[load]!=elecheck[17])
            {
                alert("第"+i+"条"+ele[i]+"不符合校验规则");
                 checkn=false;
                 document.getElementById("getnumber").value=ele[i];
                   var allNewString=replaceStrings(document.getElementById('practice').value,rtString,document.getElementById("getnumber").value);
            var like=showWrongString(document.getElementById('practice').value,ele[i]);
            document.getElementById("getthe").innerHTML=like;
                break;
            }
        }
    }
    if(checkn==true)
    {alert("已全部通过校验");
      document.getElementById("getnumber").value='';
    }
rtString=ele[i];
 //console.log(rtString);
}
    </script>
</head>
  
     
<body>
    <input type="text" id="practice" class="practice" placeholder="请输入身份证号码" value="" style="width:1000px;">

    <button type="button" onclick="test()">开始校验</button>
    </br>
    <lable>有问题的身份证号码:</lable>
    <input type="text" id="getnumber" style="color:red;">
    <button type="button" onclick="changetest()">修正</button>
    <div id="big">
        <p id="getthe"></p>
    </div>


</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值