国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS身份證信息驗證正則表達式

2024-05-06 15:16:01
字體:
來源:轉載
供稿:網友

很多時候我們都是通過一組正則表達式來判斷用戶輸入的身份證是否合法,那在用正則表達式判斷之前,首先要做到的是對身份證信息的一些效驗規則的知曉:

  1、號碼的結構

    公民身份號碼是特征組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。

  2、地址碼(前六位數)

    表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按gb/T2260的規定執行。

  3、出生日期碼(第七位至十四位)

    表示編碼對象出生的年、月、日,按gb/T7408的規定執行,年、月、日代碼之間不用分隔符。

  4、順序碼(第十五位至十七位)

    表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。

  5、校驗碼(第十八位數)

    作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現X,但如果尾號是10,那么就得用X來代替,因為如果用10做尾號,那么 此人的身份證就變成了19位。X是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家標準。

然后開始進入正題:

第一步,編寫報錯規則:

var Errors = new Array("驗證通過!", "身份證號碼位數不對!", "身份證號碼出生日期超出范圍或含有非法字符!", "身份證號碼校驗錯誤!", "身份證地區非法!");              

第二步,定義一個全國匹配的對象:

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: "國外"       } 

第三步,定義分別定義15位身份證和18位身份中的效驗規則:

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}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}$/; //測試出生日期的合法性           } 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}$/; //測試出生日期的合法性           }           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|20)[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]$/; //閏年出生日期的合法性正則表達式           } else {             ereg = /^[1-9][0-9]{5}(19|20)[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]$/; //平年出生日期的合法性正則表達式           }           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]; //檢測ID的校驗位             else return Errors[3];           } else return Errors[2];           break;         default:           return Errors[1];           break;       }             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 建湖县| 包头市| 林西县| 石棉县| 佛坪县| 武鸣县| 和平县| 竹山县| 德惠市| 兴业县| 西平县| 丹寨县| 秀山| 房产| 左云县| 北辰区| 山阴县| 闽侯县| 大港区| 郴州市| 枞阳县| 旬阳县| 商丘市| 历史| 尚志市| 苍溪县| 镇巴县| 新源县| 新巴尔虎右旗| 同德县| 滦平县| 泰宁县| 永城市| 黎川县| 成武县| 汶川县| 牡丹江市| 芷江| 南充市| 大厂| 思茅市|