上面[\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>
正则 身份证验证
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.