【正则表达式】身份证正则表达式详解(史上最全、最详细)
一、正则表达式查询身份证的公式:
'^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$'
二、解析
^[1-9]\d{5} --- 行政区号编码:421002
(18|19|([23]\d))\d{2} --- 年份:18 、 19 、 2或者3开头再接一个0-9的数字 , 然后再接2位0-9的数字
((0[1-9])|(10|11|12)) --- 月份:0开头然后接一个1-9的数字、或者是10、11、12
(([0-2][1-9])|10|20|30|31) --- 日期:0-2的数字接一个1-9的数字、或者是10、20、30、31
\d{3} --- 0-9的数字重复3次
[0-9Xx]$ --- 最后一位为检验位:0-9或者是X、X
\d --- 数字0-9
{5} --- 重复5次
三、相关资料
3.1、身份证号码规则解析
以511502199103223189示例
省 | 市 | 县 | 出生日期 | 出生户籍公安局代码 | 性别 | 校验码 |
---|---|---|---|---|---|---|
51 | 15 | 02 | 19910322 | 31 | 8 | 9 |
第十七位数字如果是奇数表示男性,如果为偶数则为女性
第十八位则为校验码,校验码计算的的规则为前十七位数字分别和其系数乘积之后求和再对11取余,所以可能会有10种值,其中一种用X表示(余数为2)
罗马数字说明
罗马数字用拉丁字母代表数字 (“I” 代表 “1”, “V” 代表 “5”, “X” 代表 “10”, “L” 代表 “50”, “C” 代表 “100”, “D” 代表 “500”, “M” 代表 “1000”). 罗马数字系统经常用在论文和书籍排序中.
对照 | 举例 |
---|---|
个位 | Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9 |
十位 | Ⅹ-10、Ⅺ-11、Ⅻ-12、XIII-13、XIV-14、XV-15、XVI-16、XVII-17、XVIII-18、XIX-19、XX-20、XXI-21、XXII-22、XXIX-29、XXX-30、XXXIV-34、XXXV-35、XXXIX-39、XL-40、XLV-45、XLIX(IL)-49、L-50、LI-51、LV-55、LX-60、LXV-65、LXXX-80、XC-90、XCIII-93、XCV-95、XCVIII-98、XCIX(IC)-99 |
百位 | C-100、CC-200、CCC-300、CD-400、CDXC(XD)-490、CDXCV-495、CDXCIX-499、D-500、DC-600、DCC-700、DCCC-800、CM-900、CMXCIX-999 |
千位 | M-1000、MC-1100、MCD-1400、MD-1500、MDC-1600、MDCLXVI-1666、MDCCCLXXXVIII-1888、MDCCCXCIX(MDCCCIC)-1899、MCM-1900、MCMLXXVI-1976、MCMLXXXIV-1984、MCMXC(MXM)-1990、MM-2000、MMMCMXCIX(MMMIM)-3999 |
四、参考资料
身份证最后一位 的计算过程
https://blog.51cto.com/u_12337265/5767950
ISO 7064:1983.MOD11-2校验码计算法