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 相关文章推荐
代码精简的可以实现元素圆角的js函数
Jul 21 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
Aug 28 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
js实现的捐赠管理完整实例
Jan 20 Javascript
js生成随机数的过程解析
Nov 24 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
Jan 19 Javascript
JS使用正则表达式找出最长连续子串长度
Oct 26 Javascript
原生JS控制多个滚动条同步跟随滚动效果
Dec 22 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
Aug 14 Javascript
轻松学习JavaScript函数中的 Rest 参数
May 30 Javascript
加速vue组件渲染之性能优化
Apr 09 Javascript
JS实现炫酷雪花飘落效果
Aug 19 Javascript
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中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
详解webpack-dev-server的简单使用
2018/04/02 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
javascript验证form表单数据的案例详解
2019/03/25 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
用python写扫雷游戏实例代码分享
2018/05/27 Python
Python实现Event回调机制的方法
2019/02/13 Python
pandas计数 value_counts()的使用
2019/06/24 Python
pytorch实现线性拟合方式
2020/01/15 Python
python 实现多维数组(array)排序
2020/02/28 Python
Python如何输出整数
2020/06/07 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
什么是类的返射机制
2016/02/06 面试题
Weblogic和WebSphere不同特点
2012/05/09 面试题
酒店前厅员工辞职信
2014/01/08 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
开票员岗位职责
2015/02/12 职场文书
个人年终总结结尾
2015/03/06 职场文书
倡议书范文大全
2015/04/28 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
小学班级管理心得体会
2016/01/07 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏