手机版

javascript验证ID号

时间:2021-10-13 来源:互联网 编辑:宝哥软件园 浏览:

当我们在做一个互联网网站时,我们经常在注册个人数据时使用身份证号码。我们需要验证身份证号,不然别人随便打个号就通过了,让你觉得这个网站做得很好。

身份证号码是有规定的。

和形式。

1.号码的结构公民身份号码是一个特征组合码,由一个17位的主体码和一个校验码组成。从左到右依次为:六位地址码、八位出生日期码、三位序列码和一位校验码。2.地址码表示编码对象常住户口所在地县(市、旗、区)的行政区划代码,按GB/T2260规定执行。3.出生日期编码表示编码对象出生的年、月、日,按照GB/T7408执行,年、月、日编码之间不得使用分隔符。4.序列码表示在相同地址码标记的区域内,分配给同年、月、日出生的人的序号。序列码的奇数分配给男人,偶数分配给女人。5.校验码是根据以前的十七位代码和ISO 7064:1983计算的校验码。MOD 11-2校验码。计算方法

1.将前一个身份证号码的17位数字乘以不同的系数。第一名到第十七名的系数分别是7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。2.将这些17位数字和系数的乘法结果相加。3.把总和除以11,看看余数是多少。4.剩下的只能有11个数字:0-1-2-3-4-5-6-7-8-9-10。他们最后的身份证号码是1-0-x-9-8-7-6-5-4-3-2。5.从上面可知,如果余数是3,身份证的第18位数字上会出现9。如果对应的数字是2,身份证的最后一个数字是罗马数字x,比如一个男人的身份证号码是[53010219200508011x]。让我们看看这张身份证是否合法。首先,我们得到前17位的乘积和[(5 * 7)(3 * 9)(0 * 10)(1 * 5)(0 * 8)(2 * 4)(1 * 2)(9 * 1)(2 * 6)(0 * 3)(0 * 7)()。最后通过对应的规则,我们可以知道余数2对应的校验码是x,因此可以判断这是一个正确的身份证号。以上摘自百度百科。

这是在网上找到的相关信息的图片。

根据已知的数据,我们可以在js中编写这个方法的内部实现。前17位的验证很容易实现,我就不多说了,重点是最后一位的校验码。

复制代码如下://身份证号码验证功能ISID卡(CARID){//身份证正则表达式(18位)VAR ISID CARD 2=/[1-9]\ d { 5 }(19 \ d { 2 } |[2-9]\ d { 3 })((0)。var stard=' 10X98765432//最后一张身份证号码为varfirst=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];//1-17系数var之和=0;if(!isid card 2 . test(card)){ return false;} var year=cardid.substr(6,4);var month=cardid.substr(10,2);var day=cardid.substr(12,2);var生日=cardid.substr(6,8);如果(生日!=datetostring(新日期(年'/'月'/'日)){//检查日期是否合法返回false} for(var I=0;I card id . length-1;I){ sum=card id[I]* first[I];} var结果=sum % 11var last=stard结果];//计算出的最后一个id号if (cardid [cardid。长度-1]。touppercase()==last){ return true;} else { return false}}//date to string返回日期格式20080808函数date tostring (date) {if (date的日期实例){ var year=date . getfull year();var month=date . getmonth()1;月=第10个月?0 '个月:个月;var day=date . getdate();第10天?0 ' day: day返回年月日;}返回“”;}

这里只验证了18张身份证,15张第一代身份证不能使用。

还会验证日期的有效性,比如0230、0431等非法日期,验证不会通过。

我们还可以将这个方法加到jquery验证中,方便验证使用。

写个自定义jquery验证校验方法

复制代码代码如下://身份证号验证jquery。验证器。addmethod(' isid卡',函数(值,元素){返回this.optional(元素)|| (isIdCard(值));},'身份证号非法!');

来个简的演示,看看效果如何。

复制代码代码如下:DOCTYPE html html head meta http-equiv=' Content-Type ' Content=' text/html;charset=utf-8'/title身份证号校验/title脚本src=' http :http://apps。bdimg。com/libs/jquery/2。1 .1/jquery。量滴js /脚本脚本src=' http :http://www。w3cschool。cc/try/demo _ source/static/js/jquery。验证。js /脚本类型=' text/JavaScript ' $(function(){ $ '(# form 1 ')).验证({规则s : { TxTidCard : ' isid card ' } });});//身份证号验证函数isIdCard(cardid) { //身份证正则表达式(18位)var isid卡2=/^[1-9]\d{5}(19\d{2}|[2-9]\d{3})((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])(\d{4}|\d{3}x)$/i;var stard=' 10X98765432//最后一位身份证的号码var first=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];//1-17系数var sum=0;if(!isid卡2。test(card)){返回false} var year=cardid.substr(6,4);var month=cardid.substr(10,2);var day=cardid.substr(12,2);定义变量生日=cardid.substr(6,8);如果(生日!=dateToString(新日期(年'/月'/日)){//校验日期是否合法返回false}表示(var I=0;我有身份证。长度-1;I){ sum=卡id[I]*第一个[I];} var结果=sum % 11var last=stard结果];//计算出来的最后一位身份证号码if(卡id[卡d长度-1]).toUpperCase()==last){ return true;} else { return false} } //日期转字符串返回日期格式20080808函数日期字符串(日期){如果(日期的日期实例){ var year=Date。getfull year();var month=日期。get month()1;月=第10个月?'0 '月:月;var day=日期。getdate();第10天?0 '天:天返回年月日;}返回"";} //jquery验证身份证号验证jquery。验证器。addmethod(' isid卡',函数(值,元素){返回this.optional(元素)|| (isIdCard(值));}, '身份证号非法!');/script/head body form id=' form 1 '方法=' get ' action=' input type=' text ' id=' txtid card ' name=' txtid card '/p input class=' submit ' type=' submit ' value='提交//p /form /body/html

用百度百科上提供的那身份证号53010219200508011X验证下

验证能通过,把x换成0试试

校验不通过,我们写的验证方法成功了!不信你用自己的身份证号试试。原来用射流研究…校验身份证号太容易了。

以上就是本文的全部内容了,希望大家能够喜欢。

版权声明:javascript验证ID号是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。