首先,校验的规则附上
<!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>