二代身份证18位校验
2023-03-22 15:03:00 # 其它

计算方法

  • 前17位系数:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
  • 身份证对应位置相乘,再求和
  • 和除以11,取余
  • 余数0-10:对应1 0 X 9 8 7 6 5 4 3 2

例子

假设号码:34052419800101001X
加权求和:21+36+0+25+16+16+2+9+48+0+0+9+0+5+0+0+2=189
取余结果:189%11=2
对应尾数:X

正则表达式

正则表达式可以粗略验证格式

1
2
3
4
5
6
7
8
// 第1位不能为0
// 第7-8位是年份,只能取19或者20
// 第11-12位是月份,只能取01-12
// 第13-14位是月份,只能取01-31
// 第18位可能是X

reg = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3([0-1]))\d{3}(\d|X)$/
valid = reg.test('34052419800101001X')