正則 身份證驗證

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

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