上面[\dx]已经包含了最后一位是x的情况了
北京 11 吉林 22 福建 35 广东 44 云南 53
天津 12 黑龙江 23 江西 36 广西 45 西藏 54
河北 13 上海 31 山东 37 海南 46 陕西 61
山西 14 江苏 32 河南 41 重庆 50 甘肃 62
内蒙古 15 浙江 33 湖北 42 四川 51 青海 63
辽宁 21 安徽 34 湖南 43 贵州 52 宁夏 64
新疆 65 台湾 71 香港 81 澳门 82 国外 91
<script>
var aCity=[];
aCity[11]= "北京 "
aCity[12]= "天津 "
aCity[13]= "河北 "
aCity[14]= "山西 "
aCity[15]= "内蒙古 "
aCity[21]= "辽宁 "
aCity[22]= "吉林 "
aCity[23]= "黑龙江 "
aCity[31]= "上海 "
aCity[32]= "江苏 "
aCity[33]= "浙江 "
aCity[34]= "安徽 "
aCity[35]= "福建 "
aCity[36]= "江西 "
aCity[37]= "山东 "
aCity[41]= "河南 "
aCity[42]= "湖北 "
aCity[43]= "湖南 "
aCity[44]= "广东 "
aCity[45]= "广西 "
aCity[46]= "海南 "
aCity[50]= "重庆 "
aCity[51]= "四川 "
aCity[52]= "贵州 "
aCity[53]= "云南 "
aCity[54]= "西藏 "
aCity[61]= "陕西 "
aCity[62]= "甘肃 "
aCity[63]= "青海 "
aCity[64]= "宁夏 "
aCity[65]= "新疆 "
aCity[71]= "台湾 "
aCity[81]= "香港 "
aCity[82]= "澳门 "
aCity[91]= "国外 "
function cidInfo(sId){
var iSum=0
var info= " "
if(!/^\d{17}(\d|x)$/i.test(sId))return false;
sId=sId.replace(/x$/i, "a ");
if(aCity[parseInt(sId.substr(0,2))]==null)return "Error:非法地区 ";
sBirthday=sId.substr(6,4)+ "- "+Number(sId.substr(10,2))+ "- "+Number(sId.substr(12,2));
if(!checkDate(sBirthday))return "Error:非法生日 ";
for(var i = 17;i> =0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
if(iSum%11!=1)return "Error:非法证号 ";
return aCity[parseInt(sId.substr(0,2))]+ ", "+sBirthday+ ", "+(sId.substr(16,1)%2? "男 ": "女 ")
}
function checkDate(str){
var d=new Date(str.replace(/-/g, "/ "))
document.write(d.getFullYear()+ "- "+ (d.getMonth()+1) + "- " + d.getDate());
return str==(d.getFullYear()+ "- "+ (d.getMonth()+1) + "- " + d.getDate());
}
document.write(cidInfo( "380524198002300016 "));
document.write(cidInfo( "340524198002300019 "))
document.write(cidInfo( "340524197711111111 "))
document.write(cidInfo( "34052419800101001x "));
function trans15to18(sId){
var cTable = new Array( '1 ', '0 ', 'x ', '9 ', '8 ', '7 ', '6 ', '5 ', '4 ', '3 ', '2 ')
var iSum = 0
if (15 == sId.length){
sId = sId.substr(0,6) + 19 + sId.substr(6) + "0 "
}
if(18 != sId.length){
return " "
}
for(var i = 17;i > 0;i --){
iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),10)
}
return sId.substr(0,sId.length - 1) + cTable[iSum % 11]
}
document.write(trans15to18( "340524800101001 "));
document.write(trans15to18( "340524800230001 "));
</script>
正则 身份证验证
最新推荐文章于 2024-03-27 15:50:19 发布