身份證正則

2021-07-09 12:51:19 字數 1124 閱讀 9451

身份證正則,不僅要考慮輸入的符合身份證規則,還需考慮最後一位符合驗證需求。

* 身份證15位編碼規則:dddddd yymmdd xx p

* dddddd:6位地區編碼

* yymmdd: 出生年(兩位年)月日,如:910215

* xx: 順序編碼,系統產生,無法確定

* p: 性別,奇數為男,偶數為女

* * 身份證18位編碼規則:dddddd yyyymmdd *** y

* dddddd:6位地區編碼

* yyyymmdd: 出生年(四位年)月日,如:19910215

* ***:順序編碼,系統產生,無法確定,奇數為男,偶數為女

* y: 校驗碼,該位數值可通過前17位計算獲得

* * 前17位號碼加權因子為 wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]

* 驗證位 y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]

* 如果驗證碼恰好是10,為了保證身份證是十八位,那麼第十八位將用x來代替

* 校驗位計算公式:y_p = mod( ∑(ai×wi),11 )

* i為身份證號碼1...17 位; y_p為校驗碼y所在校驗碼陣列位置

*/function

validateidcard

(idcard)((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d$)|(^[1-9]\d[1-9]\d((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d)|\d[xx])$)$/;

//如果通過該驗證,說明身份證格式正確,但準確性還需計算

if(regidcard.test(idcard))

var idcardmod=idcardwisum%11;//計算出校驗碼所在陣列的位置

var idcardlast=idcard.substring(17);//得到最後一位身份證號碼

//如果等於2,則說明校驗碼是10,身份證號碼最後一位應該是x

if(idcardmod==2)else

}elseelse}}

}else

}

js身份證正則精準校驗

js身份證正則精準校驗 介紹 yyyy mm dd 375 0 十八位 yy mm dd 75 0 十五位 地區 1 9 d 年的前兩位 18 19 23 d 1800 2399 年的後兩位 d 月份 0 1 9 10 11 12 天數 0 2 1 9 10 20 30 31 閏年不能禁止29 三位...

身份證號正則校驗

正則匹配身份證號 分為18位和15位 yyyy mm dd 375 0 十八位 yy mm dd 75 0 十五位 地區 1 9 d 地區 嚴格 1 6 1 9 50 d 補充重慶地區50 年的前兩位 18 19 23 d 1800 2399 年的後兩位 d 月份 0 1 9 10 11 12 天數...

正則表達 正確匹配身份證

身份證號碼是乙個長度為15或18個字元的字串,如果是15位則全部由數字組成,首位不能為0 如果是18位,則前17位全部是數字,末位可能是數字或x,下面我們嘗試用正則來表示 1 9 d d 0 9x 匹配 110105199812067023 表示分組,將 d 0 9x 分成一組,就可以整體約束他們出...