身份證號碼的正規表示式

2021-09-25 04:53:15 字數 1552 閱讀 3601

qnx使用實戰培訓,日入過萬,馬上來試試。>>>

1.號碼的結構   - 公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。   2.位址碼   表示編碼物件常住戶口所在縣(縣級市、旗、區)的行政區劃**,按gb/t2260的規定執行。   3.出生日期碼   表示編碼物件出生的年、月、日,按gb/t7408的規定執行,年、月、日**之間不用分隔符。   4.順序碼   表示在同一位址碼所標識的區域範圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。   5.校驗碼   根據前面十七位數字碼,按照iso 7064:1983.mod 11-2校驗碼計算出來的檢驗碼。

1、將前面的身份證號碼17位數分別乘以不同的係數。從第一位到第十七位的係數分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 2、將這17位數字和係數相乘的結果相加。 3、用加出來和除以11,看餘數是多少? 4、餘數只可能有0-1-2-3-4-5-6-7-8-9-10這11個數字。其分別對應的最後一位身份證的號碼為1-0-x -9-8-7-6-5-4-3-2。(即餘數0對應1,餘數1對應0,餘數2對應x...) 5、通過上面得知如果餘數是3,就會在身份證的第18位數字上出現的是9。如果對應的數字是2,身份證的最後一位號碼就是羅馬數字x。 例如:某男性的身份證號碼為【53010219200508011x】, 我們看看這個身份證是不是合法的身份證。 首先我們得出前17位的乘積和【(57)+(39)+(010)+(15)+(08)+(24)+(12)+(91)+(26)+(03)+(07)+(59)+(010)+(85)+(08)+(14)+(1*2)】是189,然後用189除以11得出的結果是189/11=17----2,也就是說其餘數是2。最後通過對應規則就可以知道餘數2對應的檢驗碼是x。所以,可以判定這是乙個正確的身份證號碼。

1.1 分部規則 我們首先提出方案1,並分步做如下規則定義:

1.1.2 年份碼規則: 年份碼長4位 以數字18,19或20,30開頭 剩餘兩位為0-9的數字 根據以上規則,寫出年份碼的正規表示式: /(18|19|20|(3\d))\d/。如果想擴充套件可以自己新增

1.1.3 月份碼規則: 月份碼長2位 第一位數字為0,第二位數字為1-9 或者第一位數字為1,第二位數字為0-2 根據以上規則,寫出月份碼的正規表示式: /((0[1-9])|(1[0-2]))/。

1.1.4 日期碼規則: 日期碼長2位 第一位數字為0-2,第二位數字為1-9 或者是10,20,30,31 根據以上規則,寫出日期碼的正規表示式 :/(([0-2][1-9])|10|20|30|31)/。

1.1.5 順序碼規則: 順序碼長3位 順序碼是數字 根據以上規則,寫出順序碼的正規表示式 :/\d/。

1.1.6 校驗碼規則: 校驗碼長1位 可以是數字,字母x或字母x 根據以上規則,寫出校驗碼的正規表示式 :/[0-9xx]/。

最後的結果

/^[1-9]\d(18|19|20|(3\d))\d((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d[0-9xx]$/;
精進版方案請參考原文

身份證號碼 正規表示式

定義判別使用者身份證號的正規表示式 15位或者18位,最後一位可以為字母 string regularexpression 1 9 d 18 19 20 d 0 1 9 10 11 12 0 2 1 9 10 20 30 31 d 0 9xx 1 9 d d 0 1 9 10 11 12 0 2 1...

身份證號碼驗證正規表示式

方案0 function isidcardno num d 0 9 x test num 校驗位按照iso 7064 1983.mod 11 2的規定生成,x可以認為是數字10。下面分別分析出生日期和校驗位 varlen,re len num.length if len 15 d d d d var...

身份證號碼

每乙個人自出生後都會有乙個身份證號碼。根據我國有關部門規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為 六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。居民身份證是國家法定的證明公民個人身份的有效證件。例如 對於身份證號碼330719...