转的,比较完善的验证身份证号的代码

 1 /*
 2 check(ID)验证身份证号码
 3 返回值:0 : "是正确的身份证号"
 4         1 : "身份证校验不符合求和模11=1这个等式",
 5         2 : "身份证最后一位校验位有误",
 6         3 : "身份证位数不正确",
 7         4 : "年份错误",
 8         5 : "月份错误",
 9         6 : "日错误"
10
11 */
12
13 function check(ID) {
14     var ck = new IDCard();
15     ck.check(ID);
16     return ck.errNum;
17 }
18
19 function IDCard(ID) {
20     var me = this;
21     this.checkCode = new Array(1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2);
22     this.ID;
23     this.errNum = 0;
24     this.err = {
25         1 : "身份证校验不符合求和模11=1这个等式",
26         2 : "身份证最后一位校验位有误",
27         3 : "身份证位数不正确",
28         4 : "年份错误",
29         5 : "月份错误",
30         6 : "日错误"
31     };
32     this.err_msg = function() {
33         return (0 !== this.errNum) ? this.err[this.errNum] : null;
34     };
35     this.check = function(ID) {
36         this.errNum = 0;
37         this.ID = ID;
38         if (cardValidate()) {
39             if (!aiCheck()) this.errNum = 1;
40             if (!LastByteCheck()) this.errNum = 2;
41             return (0 === this.errNum) ? true: false;
42         } else {
43             return false;
44         }
45     };
46     function getNum(str) {
47         var re = /^[0]*([0-9]*)$/;
48         str.match(re);
49         return parseInt(RegExp.$1,10);
50     }
51     //对身份证位数,出生日期,初步验证
52     function cardValidate() {
53         var re = /^[0-9x]{15,18}$/i;
54         if (!re.test(me.ID)) {
55             me.errNum = 7;
56             return false;
57         }
58         if (15 == me.ID.length || 18 == me.ID.length) {
59             var realLen = 0;
60             if (18 == me.ID.length) realLen = 2;
61             var year = parseInt(me.ID.substr(6, 2 + realLen),10);
62             var month = getNum(me.ID.substr(8 + realLen, 2));
63             var day = parseInt(me.ID.substr(10 + realLen, 2),10);
64             if (4 == year.length) if (year < 1900 || year > 2050) me.errNum = 4;
65             if (month < 1 || month > 12) me.errNum = 5;
66             if (day < 1 || day > 31) me.errNum = 6;
67             return 0 === me.errNum;
68         } else {
69             me.errNum = 3;
70             return false;
71         }
72     }
73     //总和模11应该等于1
74     var aiCheck = function() {
75         var sum = 0;
76         for (var i = 1; i <= me.ID.length; i++) {
77             var ai = me.ID.substr(me.ID.length - i, 1);
78             ai = (ai.toLowerCase() == 'x') ? 10 : ai;
79             var wi = Math.pow(2, i - 1) % 11;
80             sum += parseInt(ai,10) * wi;
81         }
82         return 1 == sum % 11;
83     };
84     //最后一位校验,这个可以和aiCheck合在一起,减少一次循环
85     var LastByteCheck = function() {
86         var sum = 0;
87         for (var i = 2; i <= me.ID.length; i++) {
88             var ai = me.ID.substr(me.ID.length - i, 1);
89             ai = (ai.toLowerCase() == 'x') ? 10 : ai;
90             var wi = Math.pow(2, i - 1) % 11;
91             sum += parseInt(ai,10) * wi;
92         }
93         var checkCodeIndex = sum % 11;
94         var c = me.ID.substr(me.ID.length - 1, 1);
95         //alert(c+"=="+me.checkCode[checkCodeIndex]);
96         return c == me.checkCode[checkCodeIndex];
97     };
98 }

转载于:https://www.cnblogs.com/html55/p/10298481.html

js检查身份证号是否正确相关推荐

  1. js验证身份证号码是否正确(整理)

    使用:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/ if(!(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(v ...

  2. 身份证号第18位(效验码)计算方法 用于检测身份证号是否正确

    前言: 由于在某些时候,可能需要用户输入真实的身份证号,但是用户可能会胡乱输入虚假的身份证号,导致信息的不真实性,所以为了防止用户胡乱输入,可以通过一些小方法来检测身份证号是否输入正确,本文将介绍一种 ...

  3. JS代码:身份证号EMAIL检验

    结果: <%@page import="com.sun.xml.internal.txw2.Document"%> <%@ page language=" ...

  4. JS验证身份证号地区码及最后一位校验码

    /* 参数为身份证号 返回正确校验码 */ function getjy(id) {     var arr = new Array();//分别取出身份证的前17位加入到这个数组     var a ...

  5. js正则验证身份证号是否正确

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 封装js公共方法 //验证身份证格式 const IdentityCodeValid = sId => ...

  6. 使用js验证身份证号格式以及身份证号中的生日验证

    由于不管是测试项目练手还是实际项目开发,都应该考虑数据的严密性和软件的通俗易懂的实用性,下面是我用js实现的验证身份证号格式以及身份证号中的生日验证代码 //生日移出点击事件验证身份证号中的生日验证 ...

  7. JS 校验身份证号真实性

    if(!this.testIdNO(this.form.idNO)) {this.$toast('请输入真实身份证号'); } testIdNO(value) {var vcity = {11: &q ...

  8. js验证身份证号,超准确

    看程序前先来了解下身份证号的构成:身份证号分为两种,旧的为15位,新的为18位.身份证15位编码规则:dddddd yymmdd xx p    其中 dddddd:地区码    yymmdd: 出生 ...

  9. js通过身份证号获取出生年月日,性别,年龄

    输入框输入身份证号时,我们可以通过js的方法来提取出身份证号里面的出生年月日以及性别,年龄,代码如下 /** 当type=1时获取出生日期,type=2时获取性别,type=3时获取年龄* */var ...

  10. js判断身份证号码是否正确

    js身份证验证 function IdCodeValid(code){//身份证号合法性验证//支持15位和18位身份证号//支持地址编码.出生日期.校验位验证var city={11:"北 ...

最新文章

  1. 用英语优雅地表达愤怒
  2. opengl 大作业_大学新生作业10米长!网友:确认过眼神,是我画不出的十米长卷……...
  3. Python_基础_2
  4. js实现按下删除键清空文本框内容
  5. TCP/IP / 如何进行堵塞控制?
  6. W3wp.exe占用CPU及内存资源
  7. 男朋友出的性格测试题
  8. qos的_QoS 概述
  9. ulimit命令学习
  10. 钉钉机器人:python发送消息-加签模式
  11. anjuta调试caffe
  12. 二级vb计算机考试试题,全国计算机vb二级考试真题
  13. 身份证真伪的验证(C# / ASP.NET /JS代码)及算法说明
  14. 贪吃蛇c加加代码_C语言编写简单贪吃蛇游戏源代码
  15. 搭档之家|打造信息交互平台,推进合作新发展
  16. monocle安装不成功 想尽各种办法
  17. Anaconda安装报错(Failed to create Anaconda menus)
  18. 【转载】专利翻译常用词句
  19. 离散信源信息量、平均信息量的计算
  20. mac 桌面分屏软件_6款好用的Mac分屏软件推荐

热门文章

  1. 当我们谈论深度学习时,我们在谈论什么?
  2. html移动端即时翻译插件,React框架实现移动页面翻译是一种什么体验?
  3. ue4 点击启动_4399游戏2020届校招启动
  4. 中国电信物联网平台入门学习笔记3: 电信开发者平台使用
  5. 视频描述(Video Captioning)调研
  6. 【VBA】获取当前工作表的用户名
  7. [C++]实现10以内整数的简单科学计算器
  8. Ubuntu下编译运行C#——mono tools
  9. 多线程之 NSOperation
  10. 【Xamarin开发 Android 系列 1】环境部署搭建