js检查身份证号是否正确
转的,比较完善的验证身份证号的代码
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检查身份证号是否正确相关推荐
- js验证身份证号码是否正确(整理)
使用:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/ if(!(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(v ...
- 身份证号第18位(效验码)计算方法 用于检测身份证号是否正确
前言: 由于在某些时候,可能需要用户输入真实的身份证号,但是用户可能会胡乱输入虚假的身份证号,导致信息的不真实性,所以为了防止用户胡乱输入,可以通过一些小方法来检测身份证号是否输入正确,本文将介绍一种 ...
- JS代码:身份证号EMAIL检验
结果: <%@page import="com.sun.xml.internal.txw2.Document"%> <%@ page language=" ...
- JS验证身份证号地区码及最后一位校验码
/* 参数为身份证号 返回正确校验码 */ function getjy(id) { var arr = new Array();//分别取出身份证的前17位加入到这个数组 var a ...
- js正则验证身份证号是否正确
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 封装js公共方法 //验证身份证格式 const IdentityCodeValid = sId => ...
- 使用js验证身份证号格式以及身份证号中的生日验证
由于不管是测试项目练手还是实际项目开发,都应该考虑数据的严密性和软件的通俗易懂的实用性,下面是我用js实现的验证身份证号格式以及身份证号中的生日验证代码 //生日移出点击事件验证身份证号中的生日验证 ...
- JS 校验身份证号真实性
if(!this.testIdNO(this.form.idNO)) {this.$toast('请输入真实身份证号'); } testIdNO(value) {var vcity = {11: &q ...
- js验证身份证号,超准确
看程序前先来了解下身份证号的构成:身份证号分为两种,旧的为15位,新的为18位.身份证15位编码规则:dddddd yymmdd xx p 其中 dddddd:地区码 yymmdd: 出生 ...
- js通过身份证号获取出生年月日,性别,年龄
输入框输入身份证号时,我们可以通过js的方法来提取出身份证号里面的出生年月日以及性别,年龄,代码如下 /** 当type=1时获取出生日期,type=2时获取性别,type=3时获取年龄* */var ...
- js判断身份证号码是否正确
js身份证验证 function IdCodeValid(code){//身份证号合法性验证//支持15位和18位身份证号//支持地址编码.出生日期.校验位验证var city={11:"北 ...
最新文章
- 用英语优雅地表达愤怒
- opengl 大作业_大学新生作业10米长!网友:确认过眼神,是我画不出的十米长卷……...
- Python_基础_2
- js实现按下删除键清空文本框内容
- TCP/IP / 如何进行堵塞控制?
- W3wp.exe占用CPU及内存资源
- 男朋友出的性格测试题
- qos的_QoS 概述
- ulimit命令学习
- 钉钉机器人:python发送消息-加签模式
- anjuta调试caffe
- 二级vb计算机考试试题,全国计算机vb二级考试真题
- 身份证真伪的验证(C# / ASP.NET /JS代码)及算法说明
- 贪吃蛇c加加代码_C语言编写简单贪吃蛇游戏源代码
- 搭档之家|打造信息交互平台,推进合作新发展
- monocle安装不成功 想尽各种办法
- Anaconda安装报错(Failed to create Anaconda menus)
- 【转载】专利翻译常用词句
- 离散信源信息量、平均信息量的计算
- mac 桌面分屏软件_6款好用的Mac分屏软件推荐