JavaScript(JS)驗證身份證
將代碼放到JS直接調用即可應用到網(wǎng)頁中。
?1?<script>
?2??function ?checkIdcard(idcard1){
?3??var?idcard=document.forms[0 ].elements[idcard1].value;
?4??var?Errors=new ?Array(
?5??"驗證通過!" ,
?6??"身份證號碼位數(shù)不對!" ,
?7??"身份證號碼出生日期超出范圍或含有非法字符!" ,
?8??"身份證號碼校驗錯誤!" ,
?9??"身份證地區(qū)非法!"
10? ?);
11??var?area?={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",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:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外" }?
12? ?
13??var ?idcard,Y,JYM;
14??var ?S,M;
15??var?idcard_array?=?new ?Array();
16??idcard_array?=?idcard.split("" );
17??/*地區(qū)檢驗*/
18??if(area[parseInt(idcard.substr(0,2))]==null )?
19? ?{
20???alert(Errors[4 ]);?
21???return?false ;
22? ?}
23??/*身份號碼位數(shù)及格式檢驗*/
24??switch (idcard.length){
25???case?15 :
26???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 ?)){
27????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}$/;//?測試出生日期的合法性
28???}?else ?{
29????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}$/;//測試出生日期的合法性
30? ??}
31???if (ereg.test(idcard)){
32?????alert(Errors[0]+"15" );?
33?????return?false ;
34? ???}
35???else ?{
36?????alert(Errors[2 ]);
37??????return?false ;
38? ????}
39???break ;
40? ??
41???case?18 :
42???//18位身份號碼檢測
43???//出生日期的合法性檢查?
44???//閏年月日:((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]))
45???//平年月日:((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]))
46???if?(?parseInt(idcard.substr(6,4))?%?4?==?0?||?(parseInt(idcard.substr(6,4))?%?100?==?0?&&?parseInt(idcard.substr(6,4))%4?==?0 ?)){
47???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]?$/;//閏年出生日期的合法性正則表達式
48???}?else ?{
49???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]$/;//平年出生日期的合法性正則表達式
50? ??}
51???if(ereg.test(idcard)){//測試出生日期的合法性
52????//計算校驗位
53????S?=?(parseInt(idcard_array[0])?+?parseInt(idcard_array[10]))?*?7
54????+?(parseInt(idcard_array[1])?+?parseInt(idcard_array[11]))?*?9
55????+?(parseInt(idcard_array[2])?+?parseInt(idcard_array[12]))?*?10
56????+?(parseInt(idcard_array[3])?+?parseInt(idcard_array[13]))?*?5
57????+?(parseInt(idcard_array[4])?+?parseInt(idcard_array[14]))?*?8
58????+?(parseInt(idcard_array[5])?+?parseInt(idcard_array[15]))?*?4
59????+?(parseInt(idcard_array[6])?+?parseInt(idcard_array[16]))?*?2
60????+?parseInt(idcard_array[7])?*?1 ?
61????+?parseInt(idcard_array[8])?*?6
62????+?parseInt(idcard_array[9])?*?3 ?;
63????Y?=?S?%?11 ;
64????M?=?"F" ;
65????JYM?=?"10X98765432" ;
66????M?=?JYM.substr(Y,1);/*判斷校驗位*/
67????if(M?==?idcard_array[17 ]){
68?????alert(Errors[0]+"18" );?
69?????return?false;?/*檢測ID的校驗位*/
70? ???}
71????else ?{
72?????alert(Errors[3 ]);?
73?????return?false ;
74? ???}
75? ??}
76???else ?{
77????alert(Errors[2 ]);?
78????return?false ;
79? ??}
80???break ;
81? ??
82???default :
83????alert(Errors[1 ]);?
84????return?false ;
85? ???
86? ?}
87?</script >
?2??function ?checkIdcard(idcard1){
?3??var?idcard=document.forms[0 ].elements[idcard1].value;
?4??var?Errors=new ?Array(
?5??"驗證通過!" ,
?6??"身份證號碼位數(shù)不對!" ,
?7??"身份證號碼出生日期超出范圍或含有非法字符!" ,
?8??"身份證號碼校驗錯誤!" ,
?9??"身份證地區(qū)非法!"
10? ?);
11??var?area?={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",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:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外" }?
12? ?
13??var ?idcard,Y,JYM;
14??var ?S,M;
15??var?idcard_array?=?new ?Array();
16??idcard_array?=?idcard.split("" );
17??/*地區(qū)檢驗*/
18??if(area[parseInt(idcard.substr(0,2))]==null )?
19? ?{
20???alert(Errors[4 ]);?
21???return?false ;
22? ?}
23??/*身份號碼位數(shù)及格式檢驗*/
24??switch (idcard.length){
25???case?15 :
26???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 ?)){
27????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}$/;//?測試出生日期的合法性
28???}?else ?{
29????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}$/;//測試出生日期的合法性
30? ??}
31???if (ereg.test(idcard)){
32?????alert(Errors[0]+"15" );?
33?????return?false ;
34? ???}
35???else ?{
36?????alert(Errors[2 ]);
37??????return?false ;
38? ????}
39???break ;
40? ??
41???case?18 :
42???//18位身份號碼檢測
43???//出生日期的合法性檢查?
44???//閏年月日:((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]))
45???//平年月日:((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]))
46???if?(?parseInt(idcard.substr(6,4))?%?4?==?0?||?(parseInt(idcard.substr(6,4))?%?100?==?0?&&?parseInt(idcard.substr(6,4))%4?==?0 ?)){
47???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]?$/;//閏年出生日期的合法性正則表達式
48???}?else ?{
49???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]$/;//平年出生日期的合法性正則表達式
50? ??}
51???if(ereg.test(idcard)){//測試出生日期的合法性
52????//計算校驗位
53????S?=?(parseInt(idcard_array[0])?+?parseInt(idcard_array[10]))?*?7
54????+?(parseInt(idcard_array[1])?+?parseInt(idcard_array[11]))?*?9
55????+?(parseInt(idcard_array[2])?+?parseInt(idcard_array[12]))?*?10
56????+?(parseInt(idcard_array[3])?+?parseInt(idcard_array[13]))?*?5
57????+?(parseInt(idcard_array[4])?+?parseInt(idcard_array[14]))?*?8
58????+?(parseInt(idcard_array[5])?+?parseInt(idcard_array[15]))?*?4
59????+?(parseInt(idcard_array[6])?+?parseInt(idcard_array[16]))?*?2
60????+?parseInt(idcard_array[7])?*?1 ?
61????+?parseInt(idcard_array[8])?*?6
62????+?parseInt(idcard_array[9])?*?3 ?;
63????Y?=?S?%?11 ;
64????M?=?"F" ;
65????JYM?=?"10X98765432" ;
66????M?=?JYM.substr(Y,1);/*判斷校驗位*/
67????if(M?==?idcard_array[17 ]){
68?????alert(Errors[0]+"18" );?
69?????return?false;?/*檢測ID的校驗位*/
70? ???}
71????else ?{
72?????alert(Errors[3 ]);?
73?????return?false ;
74? ???}
75? ??}
76???else ?{
77????alert(Errors[2 ]);?
78????return?false ;
79? ??}
80???break ;
81? ??
82???default :
83????alert(Errors[1 ]);?
84????return?false ;
85? ???
86? ?}
87?</script >
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
???? 隱姓埋名/低調華麗/簡單生活/完美人生
posted on 2008-02-27 16:10 poetguo 閱讀(3150) 評論(2) 編輯 收藏 所屬分類: JavaScript