身份证号码格式验证

 

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

身份证号码格式验证,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但是他的搜索优化真强化过啊)



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。 原文链接:https://www.cnblogs.com/lzpong/p/17175132.html
posted @   _Ong  阅读(135)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示