JS验证身份证有效性示例


Posted in Javascript onOctober 11, 2013
function checkIdcard(idcard){ 
var Errors=new Array( 
"验证通过", 
"身份证号码位数不对!", 
"身份证号码出生日期超出范围或含有非法字符!", 
"身份证号码校验错误!", 
"身份证地区非法!" 
); 
var area={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:"国外"} 
var idcard,Y,JYM; 
var S,M; 
var idcard_array = new Array(); 
idcard_array = idcard.split(""); 
//地区检验 
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4]; 
//身份号码位数及格式检验 
switch(idcard.length){ 
case 15: 
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ 
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性 
} else { 
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性 
} 
if(ereg.test(idcard)) return Errors[0]; 
else return Errors[2]; 
break; 
case 18: 
//18位身份号码检测 
//出生日期的合法性检查 
//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) 
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8])) 
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ 
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式 
} else { 
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式 
} 
if(ereg.test(idcard)){//测试出生日期的合法性 
//计算校验位 
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 
+ parseInt(idcard_array[7]) * 1 
+ parseInt(idcard_array[8]) * 6 
+ parseInt(idcard_array[9]) * 3 ; 
Y = S % 11; 
M = "F"; 
JYM = "10X98765432"; 
M = JYM.substr(Y,1);//判断校验位 
if(M == idcard_array[17]) return Errors[0]; //检测ID的校验位 
else return Errors[3]; 
} 
else return Errors[2]; 
break; 
default: 
return Errors[1]; 
break; 
} 
}
Javascript 相关文章推荐
Jquery方式获取iframe页面中的 Dom元素
May 07 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
Jan 27 Javascript
微信小程序开发探究
Dec 27 Javascript
vue一步步实现alert功能
Jul 05 Javascript
微信小程序 上传头像的实例详解
Oct 27 Javascript
Angular6中使用Swiper的方法示例
Jul 09 Javascript
element-ui组件table实现自定义筛选功能的示例代码
Mar 15 Javascript
Vue.js实现tab切换效果
Jul 24 Javascript
JS多个异步请求 按顺序执行next实现解析
Sep 16 Javascript
js DOM的事件常见操作实例详解
Dec 16 Javascript
微信小程序全选多选效果实现代码解析
Jan 21 Javascript
jQuery实现带进度条的轮播图
Sep 13 jQuery
JS分页效果示例
Oct 11 #Javascript
appendChild() 或 insertBefore()使用与区别介绍
Oct 11 #Javascript
JQuery对class属性的操作实现按钮开关效果
Oct 11 #Javascript
鼠标划过实现延迟加载并隐藏层的js代码
Oct 11 #Javascript
javascript自然分类法算法实现代码
Oct 11 #Javascript
jQuery阻止事件冒泡具体实现
Oct 11 #Javascript
JS定时器实例详细分析
Oct 11 #Javascript
You might like
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
python字典快速保存于读取的方法
2018/03/23 Python
Python 元类实例解析
2018/04/04 Python
python tkinter实现屏保程序
2019/07/30 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
道路运输企业安全生产责任书
2014/07/28 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
计划生育证明书写要求
2014/09/17 职场文书
刘公岛导游词
2015/02/05 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python
总结高并发下Nginx性能如何优化
2021/11/01 Servers
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android