身份证号码格式验证
具体验证方式详情见章未知乎链接。
身份证号码格式验证,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但是他的搜索优化真强化过啊)
--- auth:lzpong