function IDCardCheck(num) {num = num.toUpperCase();//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。   if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');return false;}//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 //下面分别分析出生日期和校验位 var len, re;len = num.length;if (len == 15) {re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);var arrSplit = num.match(re);//检查生日日期是否正确 var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);var bGoodDay;bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));if (!bGoodDay) {alert('输入的身份证号里出生日期不对!');return false;}else {//将15位身份证转成18位 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var nTemp = 0, i;num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);for (i = 0; i < 17; i++) {nTemp += num.substr(i, 1) * arrInt[i];}num += arrCh[nTemp % 11];return true;}}if (len == 18) {re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);var arrSplit = num.match(re);//检查生日日期是否正确 var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);var bGoodDay;bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));if (!bGoodDay) {// alert(dtmBirth.getYear());//  alert(arrSplit[2]);alert('输入的身份证号里出生日期不对!');return false;}else {//检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 var valnum;var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var nTemp = 0, i;for (i = 0; i < 17; i++) {nTemp += num.substr(i, 1) * arrInt[i];}valnum = arrCh[nTemp % 11];if (valnum != num.substr(17, 1)) {alert('18位身份证的校验码不正确!'); //应该为: + valnumreturn false;}return true;}}return false;
}

js验证身份证号是否合法相关推荐

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

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

  2. Java验证身份证号是否合法

    身份证作为居民的唯一标识.在很多系统中需要用户输入身份证号信息,今天我们就来编写一个方法验证身份证号的合法性. 首先我们来看看身份证号的编码规则: 前1-2位数字表示:所在省(直辖市.自治区)的代码: ...

  3. js 验证身份证号,根据身份证获取出生年月/性别

    用到的input <input id="idCard" name="idCard" class="form-control" type ...

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

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

  5. js验证身份证号的真实性

    身份证号码结构 组成说明 计算方法 代码验证 身份证号码结构 组成说明 公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. 前6位为地址码,以数字1-9开头,后5位为0-9的数字: 第 ...

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

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

  7. 验证身份证号是否合法

    一.身份证位数15或者18位 最后一位可以为字母 二.身份证前6位[ABCDEF]为行政区划数字代码(简称数字码): –15位身份证号码:第7.8位为出生年份(两位数),第9.10位为出生月份,第11 ...

  8. JS验证身份证号输入是否正确,身份证号码正则表达式

    const correctFormat = '511622199908281958';const inCorrectFormat = '1212121212121212121';// 身份证号码为15 ...

  9. python判断身份证是否合法的函数_Python开发之身份证验证库id_validator验证身份证号合法性及根据身...

    上个星期,大佬分享了一个验证身份证号合法性的库:id_validator,没空去试着用一下看看,今天有点时间,来试着用下这个库. 1.首先,要安装这个库,windows+R键运行cmd,打开命令行窗口 ...

  10. js进阶正则表达式15验证身份证号(|符号的使用:var reg=/^\d{17}[\d|X]$|^\d{15}$/)(str的方法substr)...

    js进阶正则表达式15验证身份证号(|符号的使用:var reg=/^\d{17}[\d|X]$|^\d{15}$/)(str的方法substr) 一.总结 1.|符号的使用:var reg=/^\d ...

最新文章

  1. android 百度导航滑动会异常,百度导航Android版问题集
  2. 九、非主体机构元素——header元素、footer元素、address元素、网页编排
  3. Elasticsearch学习记录
  4. 次世代3D游戏角色是如何打造出来的?
  5. android 热修复视频,Android热修复
  6. WSS(Windows Storage Server)2008R2使用指南(三)配置及使用篇
  7. JVM设置最大最小内存参数
  8. vue.3.0 dom赋值_Vue3.0的几大新特性
  9. java placeholder_java swing JTextField设置PlaceHolder
  10. axure文件如何加密_Axure教程:密码可见与不可见的切换设置
  11. resiprocate中提示make对all无需做任何事
  12. 常微分方程-差分方程
  13. JavaScript - 将 Allegro 坐标文件转为嘉立创坐标文件(CSV 格式)的工具
  14. c执行cmd pdf2swf_SWFTOOLS PDF2SWF 参数详解
  15. 如何去掉图片上的水印 图片水印怎么去掉
  16. 重学JavaSE 第12章 : 枚举和注解、注解的实战使用
  17. 支付宝小程序获取用户的user_id案例
  18. android最新源码(4.4.2_r1版本以上)下载
  19. SAR成像处理算法_CS算法_程序设计(Matlab)
  20. 使用Qt创建一个时钟

热门文章

  1. 2021-09-30安装windows10+ubuntu双系统
  2. java线程系列一:Thread类中的start()方法与run方法
  3. shell 封装mysql查询
  4. 【解题报告】图论基础练习(一)
  5. 小明的烦恼 详解(C++)
  6. NYOJ题目289/456/49-01背包问题汇总
  7. java 获取图片路径_Java获取文件路径的几种方式
  8. java如何避免死锁_java并发编程如何预防死锁
  9. 算法的优缺点_逻辑回归算法的优缺点
  10. atlas怎么看日志_[系列文章] Gin框架 - 使用logrus日志记录