规则分析
1. 一共18位
2. 最后一位可能是X
- 身份证前六位:省市县 130828
- 中间八位:年月日
- 最后四位:
- 倒数第二三四位 => 所在地区顺序码,偶数分配给=>女,技术分配给=>男
- 最后一位 => 按公式计算出来的校验码,X或者数字
正则表达式
// 方法一
let reg1 = /^\d{17}(\d|X)$/;
// 方法二,分组捕获
// 小括号分组的第二个作用:分组捕获,不仅可以把大正则匹配的信息捕获到,还可以单独捕获到每个小分组的内容
let reg2 = /^(\d{6})(\d{4})(\d{2})(\d{2})\d{2}(\d)(\d|X)$/;
reg2.exec("130323202012124321");
//=>["130828199012040617", "130323", "2020", "12", "12", "4", "3"...]
// 捕获结果是数组,包含每一个小分组单独获取的内容