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的动态添加控件并取值的实现代码
Sep 24 Javascript
jQuery 源码分析笔记(6) jQuery.data
Jun 08 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
Aug 02 Javascript
js 创建对象 经典模式全面了解
Aug 16 Javascript
smartupload实现文件上传时获取表单数据(推荐)
Dec 12 Javascript
Angular使用Md5加密的解决方法
Sep 16 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
详解Vue.js自定义tipOnce指令用法实例
Dec 19 Javascript
layer父页获取弹出层输入框里面的值方法
Sep 02 Javascript
vue和小程序项目中使用iconfont的方法
May 19 Javascript
vue 修改 data 数据问题并实时显示操作
Sep 07 Javascript
Vue3实现简易音乐播放器组件
Aug 14 Vue.js
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中用数组的方法设置cookies
2011/04/21 PHP
php解决安全问题的方法实例
2019/09/19 PHP
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
python的变量与赋值详细分析
2017/11/08 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python Canny边缘检测算法的实现
2020/04/24 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
应届生会计求职信
2013/11/11 职场文书
运动会广播稿50字
2014/01/26 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
答谢会策划方案
2014/05/12 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
奔腾年代观后感
2015/06/09 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
Python中npy和mat文件的保存与读取
2022/04/24 Python