源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript验证身份证号

  • 时间:2021-08-26 02:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript验证身份证号
我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit。 身份证号是有规则的。 [b]结构和形式[/b]   1.号码的结构   公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。   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、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为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)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】是189,然后用189除以11得出的结果是189/11=17----2,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的检验码是X。所以,可以判定这是一个正确的身份证号码。 以上摘自百度百科。 [img]http://files.jb51.net/file_images/article/201503/2015030310380522.jpg[/img] 这个是网上找到的相关资料图片。 根据已知的资料,我们可以把这个方法的内部实现用js写出来。前17位验证比较容易实现,我就不多说了,重点讲下最后一位的校验码。
[url=http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js]http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js[/url]">          </script>          <script src="[url=http://www.w3cschool.cc/try/demo_source/static/js/jquery.validate.js]http://www.w3cschool.cc/try/demo_source/static/js/jquery.validate.js[/url]">          </script>          <script type="text/javascript">              $(function () {                  $("#form1").validate({                      rules: {                          txtIdCard: "isIdCard"                      }                  });              });              // 身份证号验证              function isIdCard(cardid) {                  //身份证正则表达式(18位)                  var isIdCard2 = /^[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 (!isIdCard2.test(cardid)) {                      return false;                  }                  var year = cardid.substr(6, 4);                  var month = cardid.substr(10, 2);                  var day = cardid.substr(12, 2);                  var birthday = cardid.substr(6, 8);                  if (birthday != dateToString(new Date(year+'/'+month+'/'+day))) {//校验日期是否合法                      return false;                  }                  for (var i = 0; i < cardid.length - 1; i++) {                      sum += cardid[i] * first[i];                  }                  var result = sum % 11;                  var last = stard[result]; //计算出来的最后一位身份证号码                  if (cardid[cardid.length - 1].toUpperCase() == last) {                      return true;                  } else {                      return false;                  }              }              //日期转字符串 返回日期格式20080808              function dateToString(date) {                  if (date instanceof Date) {                      var year = date.getFullYear();                      var month = date.getMonth() + 1;                      month = month < 10 ? '0' + month : month;                      var day = date.getDate();                      day = day < 10 ? '0' + day : day;                      return year + month + day;                  }                  return '';              }              // jquery validate身份证号验证              jQuery.validator.addMethod("isIdCard",              function (value, element) {                  return this.optional(element) || (isIdCard(value));              },              "身份证号非法!");          </script>      </head>      <body>          <form id="form1" method="get" action="">              <input type="text" id="txtIdCard" name="txtIdCard" />              <p>                  <input class="submit" type="submit" value="提交" />              </p>          </form>      </body>  </html>  
用百度百科上提供的那身份证号53010219200508011X验证下 [img]http://files.jb51.net/file_images/article/201503/2015030310380625.png[/img] 验证能通过,把x换成0试试 [img]http://files.jb51.net/file_images/article/201503/2015030310380626.png[/img] 校验不通过,我们写的验证方法成功了!不信你用自己的身份证号试试。原来用js校验身份证号so easy。 以上就是本文的全部内容了,希望大家能够喜欢。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部