javascript身份證驗(yàn)證代碼
更新時(shí)間:2010年11月11日 10:59:25 作者:
對(duì)于客戶(hù)端驗(yàn)證用戶(hù)輸入的身份證是否符合格式的代碼,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:
<script>
//驗(yàn)證身份證號(hào)方法
var test=function(idcard){
var Errors=new Array("驗(yàn)證通過(guò)!","身份證號(hào)碼位數(shù)不對(duì)!","身份證號(hào)碼出生日期超出范圍或含有非法字符!","身份證號(hào)碼校驗(yàn)錯(cuò)誤!","身份證地區(qū)非法!");
var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"內(nèi)蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",51:"四川",52:"貴州",53:"云南",54:"西藏",61:"陜西",62:"甘肅",63:"青海",64:"寧夏",65:"xinjiang",71:"臺(tái)灣",81:"香港",82:"澳門(mén)",91:"國(guó)外"}
var idcard,Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
switch(idcard.length){
case 15:
if ((parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//測(cè)試出生日期的合法性
}
else{
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//測(cè)試出生日期的合法性
}
if(ereg.test(idcard))
return Errors[0];
else
return Errors[2];
break;
case 18:
if( parseInt(idcard.substr(6,4)) % 4 == 0 || ( parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//閏年出生日期的合法性正則表達(dá)式
}
else{
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正則表達(dá)式
}
if(ereg.test(idcard)){
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);
if(M == idcard_array[17])
return Errors[0];
else
return Errors[3];
}
else
return Errors[2];
break;
default:
return Errors[1];
break;
}
}
//測(cè)試代碼
var theid=prompt("請(qǐng)輸入身份證號(hào)碼","15位或18位");
if(theid!=""){
document.write(test(theid));
}else{
//theid=prompt("請(qǐng)輸入身份證號(hào)碼","15位或18位");
}
</script>
您可能感興趣的文章:
- JavaScript正則表達(dá)式驗(yàn)證身份證號(hào)碼是否合法(兩種方法)
- JS使用正則表達(dá)式驗(yàn)證身份證號(hào)碼
- Javascript使用正則驗(yàn)證身份證號(hào)(簡(jiǎn)單)
- JS支持帶x身份證號(hào)碼驗(yàn)證函數(shù)
- js實(shí)現(xiàn)二代身份證號(hào)碼驗(yàn)證詳解
- javascript驗(yàn)證身份證號(hào)
- vbscript和javascript版的15位, 18位的身份證號(hào)碼的驗(yàn)證函數(shù).以及根據(jù)身份證取省份,生日,性別
- 15位和18位身份證JS校驗(yàn)的簡(jiǎn)單實(shí)例
- 如何用javascript正則表達(dá)式驗(yàn)證身份證號(hào)碼是否合法
- JS正則表達(dá)式完美實(shí)現(xiàn)身份證校驗(yàn)功能
- JS實(shí)現(xiàn)的檢驗(yàn)身份證格式并輸出出生日期,年齡,性別,出生地示例
相關(guān)文章
windows 64位下MySQL 8.0.15安裝教程圖文詳解
本文通過(guò)圖文并茂的形式給大家介紹了MySQL 8.0.15安裝教程(windows 64位),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04對(duì)比分析MySQL語(yǔ)句中的IN 和Exists
mysql中in 是把外表和內(nèi)表作hash 連接,而exists是對(duì)外表作loop循環(huán),每次loop循環(huán)再對(duì)內(nèi)表進(jìn)行查詢(xún)。一直以來(lái)認(rèn)為exists比in效率高的說(shuō)法是不準(zhǔn)確的。2018-06-06MySQL索引優(yōu)化之不適合構(gòu)建索引及索引失效的幾種情況詳解
索引是有雙面性的,合理的建立索引可以提高數(shù)據(jù)庫(kù)的效率。但是如果沒(méi)有合理的構(gòu)建索引和使用索引,可能會(huì)導(dǎo)致索引失效或者影響數(shù)據(jù)庫(kù)性能,本文主要討論的是索引失效以及不適合建立索引的場(chǎng)景2022-07-07在Windows環(huán)境下使用MySQL:實(shí)現(xiàn)自動(dòng)定時(shí)備份
下面小編就為大家分享一篇在Windows環(huán)境下使用MySQL:實(shí)現(xiàn)自動(dòng)定時(shí)備份的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12mysql binlog日志查詢(xún)不出語(yǔ)句問(wèn)題及解決
這篇文章主要介紹了mysql binlog日志查詢(xún)不出語(yǔ)句問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01簡(jiǎn)單了解MySQL union all與union的區(qū)別
這篇文章主要介紹了簡(jiǎn)單了解MySQL union all與union的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03簡(jiǎn)析mysql字符集導(dǎo)致恢復(fù)數(shù)據(jù)庫(kù)報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了簡(jiǎn)析mysql字符集導(dǎo)致恢復(fù)數(shù)據(jù)庫(kù)報(bào)錯(cuò)問(wèn)題,具有一定參考價(jià)值,需要的朋友可以了解。2017-10-10