快捷搜索:  汽车  科技

身份证正则表达式48位(正则验证身份证号码)

身份证正则表达式48位(正则验证身份证号码)* HTML5学堂出品 http://www.h5course.com 请尊重原创* y: 校验码,该位数值可通过前17位计算获得* dddddd:6位地区编码* yyyymmdd: 出生年(四位年)月日,如:19910215* xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女

HTML5学堂(码匠):曾经一直觉得用正则验证身份证号码是很简单的~但是,当真正挖掘身份证号码的规则之后,才发现,想要写好一个正则验证也没有那么容易。最近一周利利出差,所以,只能周六跟大家一起分享一下自己的研究结果啦~

身份证的规则

书写一个正则之前,需要先了解一下身份证的基本规则

/*

* 身份证18位编码规则:dddddd yyyymmdd xxx y

* dddddd:6位地区编码

* yyyymmdd: 出生年(四位年)月日,如:19910215

* xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女

* y: 校验码,该位数值可通过前17位计算获得

* HTML5学堂出品 http://www.h5course.com 请尊重原创

* 前17位号码加权因子为 Wi = [ 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ]

* 验证位 Y = [ 1 0 10 9 8 7 6 5 4 3 2 ]

* 如果验证码恰好是10,为了保证身份证是十八位,那么第十八位将用X来代替

*/

校验位计算方法:身份证前17位,每一位数字和相应位数的加权因子进行乘法运算,之后求和(17项之和),再用这个和对11取余,所得的余数作为“验证位数组Y”的下标,也就是Y[余数],找到“验证位数组Y”中的相应数字,如果身份证最后一位和这个数字吻合,则身份证号码合法(如果最后一位是X/x,就对应于“验证位数组Y”中的10这个数字)

HTML5学堂(码匠) - 正则验证身份证号码,原来这么简单

如果格式正确,会返回匹配正确,并返回性别、区域、生日的信息。如果错误,也会根据情况返回不同的错误提示信息。

PS:注意,此处请传递字符串类型,不要传递数字类型,首先有些人的身份证号码会带有X,其次,JS能够处理的数字位数有限~!

身份证正则表达式48位(正则验证身份证号码)(1)

HTML5学堂(码匠) - https://weixin.mj216.com/

猜您喜欢: