验证身份证号码是否为正确值

今天(2018-04-09)在整理正则表达时,有一个关于身份证号码的正则匹配。最简单的不动脑子的匹配方式为:^[1-9]\d{16}[\d|x]$,但是这样很容易伪造一个身份证号来骗过电脑,于是加强版的正则匹配为:

^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$

虽然加强版的正则匹配能过滤掉大部分不靠谱的身份证号码,但仍存在漏网之鱼,比如我创造了一个符合它正则规则的号码:123456180011116578(纯属构造)

验证身份证号码是否为正确值_第1张图片

从上图我们看到,这个构造的身份证号码验证通过了。所以光用正则匹配不能完全判断输入的身份证号是否为正确的值。

后来在百度百科里看到了身份证号的验证规则:

验证身份证号码是否为正确值_第2张图片

于是开始动手写了验证的js代码:



	
		身份证号码验证规则
		 
		
	
	
		
输入身份证号码:

你可能感兴趣的:(js)