<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>身份证验证</title>
</head>
<body>
<script type="text/javascript">
var idcard = "220122197901205312";
var idcard1= "22012219880122531X";
var idcard2= "22012219880122531x";
var idcard3= "220122198801225";
var idcard4= "22012219880122X";
var regid = /(^\d{15}$)|(^\d{17}[0-9|X|x]$)/;
console.log(regid.test(idcard));//true
console.log(regid.test(idcard1));//true
console.log(regid.test(idcard2));//true
console.log(regid.test(idcard3));//true
console.log(regid.test(idcard4));//false
//任务,判断省份证是否合法
//判断身份证 性别
//获取出生年月日
//最后一位的校验方法
//前17位号码加权因子
var wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
//除以11后,可能产生的11位余数、验证码
var yi = new Array(1,0,10,9,8,7,6,5,4,3,2);
if(regid.test(idcard))
{
if(idcard.length==18)
{
var sum = 0;//将前17位与对应的加权因子乘积累加
for(var i=0;i<17;i++)
{
sum += idcard[i]*wi[i];
}
console.log("身份证前17位加权乘积和"+sum);
var idCardMod = sum%11;
console.log("身份证最后一位在数组中校验的位置:"+idCardMod);
var jyvalue = yi[idCardMod];
console.log("身份证最后一位校验值:"+jyvalue);
var idCardLast = idcard[17];
console.log("身份证最后一位:"+idCardLast);
if(idCardMod==2)
{
if(idCardLast=='x'||idCardLast=='X'){console.log("身份证合法!");}
else{console.log("身份证不合法!");}
}
else
{
if(idCardLast==jyvalue){console.log("身份证合法!");}
else{console.log("身份证不合法!");}
}
}
}
//性别判断
if(idcard[16]%2==0){console.log("性别女");}
else{console.log("性别男");}
//输出出生年月日
console.log(idcard.substring(6,14));
console.log("生日是:"+idcard.substring(6,10)+"年"+idcard.substring(10,12)+"月"+idcard.substring(12,14)+"日");
//输出所在地
console.log("输出所在地"+idcard.substring(0,2));
var substr = idcard.substring(0,2);
/*
11 北京市bai12 天津市13 河北省du14 山西省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 澳门特别行政区
**/
var shenghui = [
{"id":"11","name":"北京市"},
{"id":"12","name":"天津市"},
{"id":"13","name":"河北省"},
{"id":"22","name":"吉林省"}
];
for(var j=0;j<shenghui.length;j++)
{
if(substr==shenghui[j].id){console.log(shenghui[j].name);break;}
}
</script>
</body>
</html>


