javascript身份證驗證代碼
更新時間:2010年11月11日 10:59:25 作者:
對于客戶端驗證用戶輸入的身份證是否符合格式的代碼,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:
<script>
//驗證身份證號方法
var test=function(idcard){
var Errors=new Array("驗證通過!","身份證號碼位數(shù)不對!","身份證號碼出生日期超出范圍或含有非法字符!","身份證號碼校驗錯誤!","身份證地區(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:"臺灣",81:"香港",82:"澳門",91:"國外"}
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}$/;//測試出生日期的合法性
}
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}$/;//測試出生日期的合法性
}
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;
}
}
//測試代碼
var theid=prompt("請輸入身份證號碼","15位或18位");
if(theid!=""){
document.write(test(theid));
}else{
//theid=prompt("請輸入身份證號碼","15位或18位");
}
</script>
您可能感興趣的文章:
- JavaScript正則表達(dá)式驗證身份證號碼是否合法(兩種方法)
- JS使用正則表達(dá)式驗證身份證號碼
- Javascript使用正則驗證身份證號(簡單)
- JS支持帶x身份證號碼驗證函數(shù)
- js實現(xiàn)二代身份證號碼驗證詳解
- javascript驗證身份證號
- vbscript和javascript版的15位, 18位的身份證號碼的驗證函數(shù).以及根據(jù)身份證取省份,生日,性別
- 15位和18位身份證JS校驗的簡單實例
- 如何用javascript正則表達(dá)式驗證身份證號碼是否合法
- JS正則表達(dá)式完美實現(xiàn)身份證校驗功能
- JS實現(xiàn)的檢驗身份證格式并輸出出生日期,年齡,性別,出生地示例
相關(guān)文章
windows 64位下MySQL 8.0.15安裝教程圖文詳解
本文通過圖文并茂的形式給大家介紹了MySQL 8.0.15安裝教程(windows 64位),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04MySQL索引優(yōu)化之不適合構(gòu)建索引及索引失效的幾種情況詳解
索引是有雙面性的,合理的建立索引可以提高數(shù)據(jù)庫的效率。但是如果沒有合理的構(gòu)建索引和使用索引,可能會導(dǎo)致索引失效或者影響數(shù)據(jù)庫性能,本文主要討論的是索引失效以及不適合建立索引的場景2022-07-07在Windows環(huán)境下使用MySQL:實現(xiàn)自動定時備份
下面小編就為大家分享一篇在Windows環(huán)境下使用MySQL:實現(xiàn)自動定時備份的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12簡單了解MySQL union all與union的區(qū)別
這篇文章主要介紹了簡單了解MySQL union all與union的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03簡析mysql字符集導(dǎo)致恢復(fù)數(shù)據(jù)庫報錯問題
這篇文章主要介紹了簡析mysql字符集導(dǎo)致恢復(fù)數(shù)據(jù)庫報錯問題,具有一定參考價值,需要的朋友可以了解。2017-10-10