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