即興的靈感

          思維是一種藝術; 藝術需要靈感。

          博客好友

          最新評論

          JavaScript(JS)驗證身份證

          使用JavaScript驗證身份證的代碼如下:

          將代碼放到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
          >




          ?
          鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
          ???? 隱姓埋名/低調華麗/簡單生活/完美人生

          posted on 2008-02-27 16:10 poetguo 閱讀(3150) 評論(2)  編輯  收藏 所屬分類: JavaScript

          評論

          # re: 驗證身份證 2008-02-27 20:06 魔域私服

          學習了```````````希望多出好案例  回復  更多評論   

          # re: JavaScript(JS)驗證身份證[未登錄] 2013-11-26 16:26 xxx

          腦殘自己不試試嗎  回復  更多評論   

          主站蜘蛛池模板: 尼勒克县| 广西| 邛崃市| 固始县| 黑河市| 基隆市| 鲁山县| 平顺县| 江门市| 布尔津县| 余庆县| 怀来县| 株洲县| 扶风县| 和平区| 浏阳市| 乐陵市| 信阳市| 海伦市| 黑龙江省| 沙洋县| 鸡东县| 鲜城| 铜川市| 黑水县| 株洲市| 张家口市| 峡江县| 扎鲁特旗| 营口市| 南部县| 通榆县| 巩留县| 西丰县| 正安县| 专栏| 阜宁县| 松滋市| 思茅市| 甘德县| 肥西县|