<script>//Verification of ID number method var test=function (Idcard) {var errors=new Array ("Verify passed!", "ID card number is wrong!", "ID number date of birth out of range or contain illegal characters ! "," ID card number check error! "," Identity card area illegal! "); var area={11: "Beijing", 12: "Tianjin", 13: "Hebei", 14: "Shanxi", 15: "Inner Mongolia", 21: "Liaoning", 22: "Jilin", 23: "Heilongjiang", 31: "Shanghai", 32: "Jiangsu", 33: "Zhejiang", 34: "Anhui", 35: "Fujian", 36: "Jiangxi", 37: "Shandong", 41: "Henan", 42: "Hubei", 43: "Hunan", 44: "Guangdong", 45: "Guangxi", 46: "Hainan", 50: "Chongqing", 51: "Sichuan", 52: "Guizhou", 53: "Yunnan", 54: "Tibet", 61: "Shaanxi", 62: "Gansu", 63: "Qinghai", 64: "Ningxia",: "Xinjiang", 71: "Taiwan", 81: "Hong Kong", 82: "Macao", 91: "Foreign"} 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% = = 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}$/;//Test Birth date Legality} 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}$/;//Test Birth date legality} 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))% = = 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]$/;//the legality of a leap year birth date regular expression} 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]$/;//excepting the legality of the birth date regular expression} if (Ereg.test (Idcard)) {S = (parseint) ( Idcard_array[0]) + parseint (idcard_array[10])) * 7 + (parseint (idcard_array[1)) + parseint (idcard_array[11)) * 9 + (parse Int (idcard_array[2]) + parseint (idcard_array[12])) * + (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 }//Test code var theid=prompt ("Please enter your ID number", "15-bit or 18-bit"); if (theid!= "") {document.write (Test (Theid)); }else{//theid=prompt ("Please enter the ID number", "15-bit or 18-bit"); } </script>
[Ctrl + A All SELECT Note: If the need to introduce external JS need to refresh to perform]
The more straightforward test code is:
Alert (test ("ID number"));
After testing, the above JS verification is too strong, the input of the correct ID card, a random change is an error! Very practical, in the future everyone will be convenient to understand the user input ID card is correct or not.