正则 身份证验证

上面[\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> 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章