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 相关文章推荐
IE 下的只读 innerHTML
Aug 21 Javascript
jQuery选中select控件 无法设置selected的解决方法
Sep 01 Javascript
JavaScript在多浏览器下for循环的使用方法
Nov 07 Javascript
当鼠标移动时出现特效的JQuery代码
Nov 08 Javascript
js获取指定日期周数以及星期几的小例子
Jun 27 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
js闭包所用的场合以及优缺点分析
Jun 22 Javascript
JavaScript变量作用域_动力节点Java学院整理
Jun 27 Javascript
vue2.0+vue-dplayer实现hls播放的示例
Mar 02 Javascript
layui实现数据表格table分页功能(ajax异步)
Jul 27 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 jQuery
基于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
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
JS常用算法实现代码
2016/11/14 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
vue环境搭建简单教程
2017/11/07 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python修改Excel数据的实例代码
2013/11/01 Python
用C++封装MySQL的API的教程
2015/05/06 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
解决python "No module named pip" 的问题
2018/10/13 Python
python中强大的format函数实例详解
2018/12/05 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
创业计划书的内容步骤和要领
2014/01/04 职场文书
小学教师听课制度
2014/02/01 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
扬州个园导游词
2015/02/06 职场文书
2015年复活节活动总结
2015/02/27 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android