
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.1 地址码规则:

地址码长6位
以数字1-9开头
后5位为0-9的数字
根据以下规则,写出地址码的正则表达式: /\d{5}/
1.1.2 年份码规则:
年份码长4位
以数字18,19或20,30开头
剩余两位为0-9的数字
根据以下规则,写出年份码的正则表达式: /(18|19|20|(3\d))\d{2}/。如果想扩展可以自己添加
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{3}/。
1.1.6 校验码规则:
校验码长1位
可以是数字,字母x或字母X
根据以下规则,写出校验码的正则表达式 :/[0-9Xx]/。
最后的结果
/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
/// 15 位
let reg15 = /^[1-9]\d{5}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}$/;
另有详细版,请参考原文
参考地址: %E5%B1%85%E6%B0%91%E8%BA%AB%E4%BB%BD%E8%AF%81%E5%8F%B7%E7%A0%81/3400358?fr=aladdin
1-9
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-122170-1.html
把南海变成水雷海
6现在我用的9
它也无法预料中国是否会和当初的苏联一样---我舰奉命撞击你舰