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确定对象类型方法
Mar 30 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
Nov 19 Javascript
使用js如何实现全选与全不选
Dec 30 Javascript
查询json的数据结构的8种方式简介
Mar 10 Javascript
基于JS实现简单的样式切换效果代码
Sep 04 Javascript
js+css简单实现网页换肤效果
Dec 29 Javascript
使用Curl命令查看请求响应时间方法
Nov 04 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
Dec 28 Javascript
JS实现颜色的10进制转化成rgba格式的方法
Sep 04 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
Jun 05 Javascript
微信小程序反编译的实现
Dec 10 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
Home Coffee Roasting
2021/03/03 咖啡文化
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
python实现html转ubb代码(html2ubb)
2014/07/03 Python
gearman的安装启动及python API使用实例
2014/07/08 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
python中解析json格式文件的方法示例
2017/05/03 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
法国家具及室内配件店:home24
2017/01/21 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
物业管理个人自我评价
2013/11/08 职场文书
cf搞笑广告词
2014/03/14 职场文书
学校个人对照检查材料
2014/08/26 职场文书
史上最牛辞职信
2015/05/13 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书