<!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>