This article mainly introduces JS regular expressions to perfectly implement the ID card verification function. Friends who need it can refer to it. I hope it can help everyone.
Note:
1. Only 18-digit ID numbers are verified. There should be very few 15-digit ID numbers now,
2. xX is not case-sensitive,
3. The year of birth is 1900-2099, and the number of days in each month is also verified (taking into account the situation of leap months),
4. See the verification rules for details. The writing is more detailed and clear. I believe you can write one yourself after reading it.
https://jingyan.baidu.com/article/7f41ececff944a593d095c8c.html
5. At present, it is not possible to accurately verify the location code. I have collected and sorted the location code and provided a query API for reference only.
If there is any inaccuracy, please leave a message to point it out
api address: http://www.xuzee.com/api/idcard.php
Interface description: http:/ /www.xuzee.com/api/
6. This verification function is currently running in the project. No problems have been found yet. If there are any problems, it will be updated.
Above
Go directly to the code:
function testid(id) { // 1 "验证通过!", 0 //校验不通过 // id为身份证号码 var format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/; //号码规则校验 if(!format.test(id)){ return {'status':0,'msg':'身份证号码不合规'}; } //区位码校验 //出生年月日校验 前正则限制起始年份为1900; var year = id.substr(6,4),//身份证年 month = id.substr(10,2),//身份证月 date = id.substr(12,2),//身份证日 time = Date.parse(month+'-'+date+'-'+year),//身份证日期时间戳date now_time = Date.parse(new Date()),//当前时间戳 dates = (new Date(year,month,0)).getDate();//身份证当月天数 if(time>now_time||date>dates){ return {'status':0,'msg':'出生日期不合规'} } //校验码判断 var c = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2); //系数 var b = new Array('1','0','X','9','8','7','6','5','4','3','2'); //校验码对照表 var id_array = id.split(""); var sum = 0; for(var k=0;k<17;k++){ sum+=parseInt(id_array[k])*parseInt(c[k]); } if(id_array[17].toUpperCase() != b[sum%11].toUpperCase()){ return {'status':0,'msg':'身份证校验码不合规'} } return {'status':1,'msg':'校验通过'} }
Related recommendations:
15 commonly used js Regular expressions
Must master JS regular expressions
In-depth understanding of JS regular expressions---grouping
The above is the detailed content of JS regular expression perfectly implements ID card verification function. For more information, please follow other related articles on the PHP Chinese website!