身份证验证代码-----javascript篇

js 代码
  1. <script language=javascript>   
  2. function checkIdcard(idcard){   
  3.   
  4. 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:"国外"}    
  5.   
  6. var idcard,Y,JYM;   
  7. var S,M;   
  8. var idcard_array = new Array();   
  9. idcard_array = idcard.split("");   
  10. //地区检验   
  11. if(area[parseInt(idcard.substr(0,2))]==nullreturn 4;   
  12. //身份号码位数及格式检验   
  13. switch(idcard.length){   
  14. case 15:   
  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 )){   
  16. 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}$/;//测试出生日期的合法性   
  17. else {   
  18. 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}$/;//测试出生日期的合法性   
  19. }   
  20. if(ereg.test(idcard)) return 0;   
  21. else return 2;   
  22. break;   
  23. case 18:   
  24. //18位身份号码检测   
  25. //出生日期的合法性检查    
  26. //闰年月日:((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]))   
  27. //平年月日:((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]))   
  28. if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){   
  29. 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]$/;//闰年出生日期的合法性正则表达式   
  30. else {   
  31. 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]$/;//平年出生日期的合法性正则表达式   
  32. }   
  33. if(ereg.test(idcard)){//测试出生日期的合法性   
  34. //计算校验位   
  35. S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7   
  36. + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9   
  37. + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10   
  38. + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5   
  39. + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8   
  40. + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4   
  41. + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2   
  42. + parseInt(idcard_array[7]) * 1    
  43. + parseInt(idcard_array[8]) * 6   
  44. + parseInt(idcard_array[9]) * 3 ;   
  45. Y = S % 11;   
  46. M = "F";   
  47. JYM = "10X98765432";   
  48. M = JYM.substr(Y,1);//判断校验位   
  49. if(M == idcard_array[17]) return 0; //检测ID的校验位   
  50. else return 3;   
  51. }   
  52. else return 2;   
  53. break;   
  54. default:   
  55. return 1;   
  56. break;   
  57. }   
  58. }   
  59.   
  60.         function CheckForm()   
  61.         {   
  62.         var Errors=new Array(   
  63. "验证通过!",   
  64. "身份证号码位数不对!",   
  65. "身份证号码出生日期超出范围或含有非法字符!",   
  66. "身份证号码校验错误!",   
  67. "身份证地区非法!"  
  68. );   
  69.         var result=checkIdcard(document.getElementById("txt_sfzmhm").value);   
  70.         if(result!=0)   
  71.         {   
  72.         alert(Errors[result]);   
  73.                 document.getElementById("txt_sfzmhm").focus();   
  74.                 return false;           
  75.         }           
  76.             if(document.getElementById("txt_djzsxxdz").value=="")   
  77.             {   
  78.                 alert('请输入你的登记住所详细地址!');   
  79.                 document.getElementById("txt_djzsxxdz").focus();   
  80.                 return false;   
  81.             }   
  82.             return true;   
  83.         }   
  84.   
  85. //================================================   
  86. //地区选择   
  87. function RemoveAllOption(obj)   
  88. {   
  89.   var len = obj.length-1;   
  90.   for(var i=len; i>=0; i--)   
  91.   {   
  92.      obj.options.remove(i);   
  93.   }   
  94. }   
  95. function AddEmptyOption(obj)   
  96. {   
  97.    obj.options.add(new Option("",""));   
  98. }   
  99. function FirstChangeOption1(ele,first,second,field)   
  100. {   
  101.   RemoveAllOption(second);   
  102.   second.options.add(new Option(first.options[first.selectedIndex].text,""));    
  103.   var TempOptionStr;   
  104.     var SkillCode = field.value;   
  105.     var currentValue = first.value;   
  106.     if (currentValue.length >= 2){   
  107.         var arrValue = SkillCode.split(";");   
  108.         for (var i=0;i<arrValue.length;i++){   
  109.             var arrOneValue = arrValue[i].split(",");   
  110.             if (currentValue.substr(0,2) == arrOneValue[0].substr(0,2)) {    //查找到合适的项目   
  111.              if( arrOneValue[0].length >2 && arrOneValue[0] != currentValue)   
  112.              {   
  113.                     TempOptionStr= ' '+arrOneValue[1];   
  114.                     second.options.add(new Option(TempOptionStr,arrOneValue[0]));   
  115.              }   
  116.             }   
  117.         }   
  118.     }   
  119.    if (second.options.length <= 1) {    
  120.    second.style.display='none'; document.getElementById(ele).value = first.value ;   
  121.    }   
  122.     else  second.style.display='';  }   
  123. function FirstChangeOption2(ele,first,second,third,field)   
  124. {   
  125.   RemoveAllOption(second);   
  126.   second.options.add(new Option(first.options[first.selectedIndex].text,""));  RemoveAllOption(third);   
  127.   AddEmptyOption(third);   
  128.   var TempOptionStr;   
  129.     var SkillCode = field.value;   
  130.     var currentValue = first.value;   
  131.     if (currentValue.length >= 2){   
  132.         var arrValue = SkillCode.split(";");   
  133.         for (var i=0;i<arrValue.length;i++){   
  134.             var arrOneValue = arrValue[i].split(",");    
  135.             if (currentValue.substr(0,2) == arrOneValue[0].substr(0,2)) {    //查找到合适的项目   
  136.                 var IsZero = true;    
  137.                 var ssub = arrOneValue[0].substr(4);   
  138.                 for(var j=0; j<ssub.length;j++)   
  139.                 {   
  140.                     if(ssub.substring(j,j+1) != "0")   
  141.                     {   
  142.                        IsZero = false;   
  143.                        break;   
  144.                     }   
  145.                 }   
  146.              if(IsZero && arrOneValue[0]!=currentValue)   
  147.              {   
  148.                    TempOptionStr= ' '+arrOneValue[1];   
  149.                    second.options.add(new Option(TempOptionStr,arrOneValue[0]));   
  150.              }   
  151.             }   
  152.         }   
  153.     }   
  154. document.getElementById(ele).value = first.value;   
  155.   
  156. if (second.options.length <= 1) second.style.display='none'; else second.style.display='';   
  157. if (third.options.length <= 1) third.style.display='none'; else third.style.display=''; }   
  158. function SecondChangeOption(ele,second,third,field)   
  159. {   
  160.   RemoveAllOption(third);   
  161.   third.options.add(new Option(second.options[second.selectedIndex].text.replace(' ',''),""));   
  162.     var TempOptionStr;   
  163.     var SkillCode = field.value;   
  164.     var currentValue = second.value;   
  165.     if (currentValue.length!=0){   
  166.         var arrValue = SkillCode.split(";");   
  167.         for (var i=0;i<arrValue.length;i++){   
  168.             var arrOneValue = arrValue[i].split(",");   
  169.             if (arrOneValue[0].length>4 && arrOneValue[0] != currentValue  && currentValue.substring(0,4) == arrOneValue[0].substr(0,4)) {    //查找到合适的项目   
  170.                 TempOptionStr= ' '+arrOneValue[1];   
  171.                 third.options.add(new Option(TempOptionStr,arrOneValue[0]));   
  172.             }   
  173.         }   
  174.     }   
  175. document.getElementById(ele).value = second.value;    
  176.   
  177. if (third.options.length <= 1) third.style.display='none'; else third.style.display=''; }   
  178. function ThirdChangeOption(ele,third)   
  179. {   
  180.    document.getElementById(ele).value = third.value ;   
  181.      
  182.       
  183. }   
  184.   
  185.         </script>   
  186.   
  187.   
  188. 其中idcard为身份证号。  

 

原文地址【http://www.hxhnet.com/article.asp?id=165】

你可能感兴趣的:(JavaScript,正则表达式,F#,J#,asp)