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

news/2024/11/23 9:40:37/

今天(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(纯属构造)


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

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


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

<!DOCTYPE>
<html><head><title>身份证号码验证规则</title><script src="http://cdn.gbtags.com/datatables/1.10.5/js/jquery.js"></script> <script>$(function(){$('.btn').click(function(){let orginnumber =$('.number').val();let partn = /^[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]$/;//先用正则判断是否为正确的格式if (!partn.exec(orginnumber)){alert('请检查你输入的身份证个式是否正确!');}else{let number = [...orginnumber]; //es6语法,利用...将变量的值转成数组。let ration= new Array("7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2");//系数let ration22= new Array("1","0","x","9","8","7","6","5","4","3","2");let sum=0;console.log(ration);for(let i=0;i<number.length-1;i++){sum=number[i]*ration[i]+sum;console.log(i);}let mod = sum%11;if(ration22[mod]==number[17]){alert('正确');}else{alert('不正确');}}})})
</script></head><body><div><lable for="input">输入身份证号码:</lable><input type="text" class="number"/><button class="btn">提交</button></div></body>
</html>


http://www.ppmy.cn/news/503041.html

相关文章

使用JS校验身份证号

1. 中国居民身份证号码编码规则 第一、二位表示省&#xff08;自治区、直辖市、特别行政区&#xff09;&#xff0c;对于地区代码。 第三、四位表示市&#xff08;地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码&#xff09;。其中&#xff0c;01-20&#xff0c;51-70表…

身份证号处理c语言

18位身份证号码&#xff1a;第7、8、9、10位为出生年份(四位数)&#xff0c;第11、第12位为出生月份&#xff0c;第13、14位代表出生日期&#xff0c;第17位代表性别&#xff0c;奇数为男&#xff0c;偶数为女。 用户输入一个合法的身份证号&#xff0c;请输出用户的出生年月日…

中国身份证号码验证,支持15,18位,可验证成功90%的身份证号

using System;/// <summary>/// Summary description for IDCardValid/// </summary>public class IDCardValid{public IDCardValid(){//// TODO: Add constructor logic here//}/// <summary>/// 验证身份证号码/// </summary>/// <param name&quo…

不变的是需求,变化的是解决方法和工具:探讨iPaaS与ESB的差异

在企业数字化转型过程中&#xff0c;企业需要面临日益复杂的业务和数据集成挑战。为了应对这些挑战&#xff0c;需要借助适当的解决方法和工具来实现系统间的通信和数据传输。在这方面&#xff0c;iPaaS&#xff08;Integration Platform as a Service&#xff09;和ESB&#x…

通过身份证号码能得到什么呢?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术&#xff1a;VS 与jquery 作者&#xff1a;梁英豪 撰写时间&#xff1a;2019年7月8日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 通过身份证号码能得到什么呢&#xff1f; 现在是一个科技的…

PHP 验证身份证号

<?php // check class check{// $num为身份证号码&#xff0c;$checkSex&#xff1a;1为男&#xff0c;2为女&#xff0c;不输入为不验证public function checkIdentity($num,$checkSex){// 不是15位或不是18位都是无效身份证号if(strlen($num) ! 15 && strlen($n…

身份证号码的验证

/*-------------------------------------------------------------------------------* 函数名称&#xff1a;Boolean gf_check_identity(string as_identity)* 函数功能&#xff1a;验证身份证号输入的正确性(可以对身份证号码的第18位校验位进行判断.)* 参数说明&#xff1a…

js判断身份证号

JavaScript判断身份证号是否格式正确&#xff0c;是否为真实的身份证号 var vcity{ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海…