身份证号码格式验证

 

 具体验证方式详情见章未知乎链接。

身份证号码格式验证,js代码

 1 //效验省份证号码格式
 2 function IDCheck(id){
 3     var r=new RegExp("^[1-9](\\d{5})(19|20)(\\d{2})((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)(\\d{3})(\\d|X|x)$");
 4     if(!r.test(id))
 5         return false;
 6     q=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];//加权乘数
 7     x=["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];//效验位数字
 8     p=[];
 9     s=0;
10     q.forEach((v,i)=>{
11       p[i]=v*parseInt(id.charAt(i));
12       s=s+p[i];
13       //console.log(v,id.charAt(i))
14     })
15     console.log(s%11,x[s%11])
16     return x[s%11]==id.charAt(17) 
17 }

如果还要效验日期的,也可以加入。

一些正则表达式

// 18位身份证号码正则
string IDCard18_REGEX = "^[1-9](\\d{5})(19|20)(\\d{2})((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)(\\d{3})(\\d|X|x)$";
// 15位身份证号码正则
string IDCard15_REGEX = "^[1-9](\\d{5})(\\d{2})((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)(\\d{3})$";
// 平年日期正则
string OrdinaryYear_REGEX = "(((0[13578])|10|12)(([0-2][1-9])|10|20|30|31)|(((0[469])|11)(([0-2][1-9])|10|20|30))|(02(([0-2][1-8])|09|19|10|20)))";
// 闰年日期正则
string LeapYear_REGEX = "(((0[13578])|10|12)(([0-2][1-9])|10|20|30|31)|(((0[469])|11)(([0-2][1-9])|10|20|30))|(02(([0-2][1-9])|10|20)))";
// 1-17位相乘因子数组
int[] FACTOR = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
// 18位随机码数组
char[] RANDOM = ['1','0','X','9','8','7','6','5','4','3','2'];

 

 

参考:

https://www.zhihu.com/question/336417424

https://blog.csdn.net/qq_35358091/article/details/83997426(话说,百度搜的都是csdn的,cnblog的不常见,不喜欢csdn但是他的搜索优化真强化过啊)

posted @ 2023-03-03 12:03  _Ong  阅读(125)  评论(0编辑  收藏  举报