JavaScript实现身份证验证代码实例


Posted in Javascript onAugust 26, 2019

这篇文章主要介绍了JavaScript实现身法证验证代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

function isIdCardNo(num) {
        num = num.toUpperCase();      //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。    
        if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
          //alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');       
          //alert('身份证号长度不正确或不符合规定!');       
          return false;    
        } 
        //验证前2位,城市符合
        var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
        if(aCity[parseInt(num.substr(0,2))]==null){
          //alert('身份证号不正确或不符合规定!');
          return false;
        }
        //alert('城市:'+aCity[parseInt(num.substr(0,2))]);
        
        //下面分别分析出生日期和校验位
        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位身份证的校验码不正确!应该为:' + valnum);
              //alert('18位身份证号的校验码不正确!');
              return false;
            }
            return true;
          }
        } 
        return false;
      };

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于JQuery制作的产品广告效果
Dec 08 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
Dec 12 Javascript
Web跨浏览器进程通信(Web跨域)
Apr 17 Javascript
jquery序列化表单以及回调函数的使用示例
Jul 02 Javascript
javascript作用域链(Scope Chain)用法实例解析
Nov 30 Javascript
如何理解Vue的render函数的具体用法
Aug 30 Javascript
微信小程序全局变量功能与用法详解
Jan 22 Javascript
koa+jwt实现token验证与刷新功能
May 30 Javascript
纯js+css实现在线时钟
Aug 18 Javascript
JS+Canvas实现五子棋游戏
Aug 26 Javascript
Vertx基于EventBus发送接受自定义对象
Nov 16 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
Feb 05 Javascript
基于vue、react实现倒计时效果
Aug 26 #Javascript
tweenjs缓动算法的使用实例分析
Aug 26 #Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
Aug 26 #Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 26 #Javascript
小程序实现层叠卡片滑动效果
Aug 26 #Javascript
微信小程序 数据缓存实现方法详解
Aug 26 #Javascript
使用typescript构建Vue应用的实现
Aug 26 #Javascript
You might like
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP中的float类型使用说明
2010/07/27 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
如何在PHP中使用数组
2020/06/09 PHP
基于JQUERY的多级联动代码
2012/01/24 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
用实例解释Python中的继承和多态的概念
2015/04/27 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
Python函数式编程
2017/07/20 Python
Python自动抢红包教程详解
2019/06/11 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
学前教育教师求职自荐信
2013/09/22 职场文书
家长学校实施方案
2014/03/15 职场文书
软环境建设心得体会
2014/09/09 职场文书