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 replace 字符替换实现代码
Dec 02 Javascript
jquery EasyUI的formatter格式化函数代码
Jan 12 Javascript
js导出格式化的excel 实例方法
Jul 17 Javascript
jquery获取复选框被选中的值
Apr 10 Javascript
jQuery结合ajax实现动态加载文本内容
May 19 Javascript
jQuery蓝色风格滑动导航栏代码分享
Aug 19 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
layer弹窗插件操作方法详解
May 19 Javascript
Vue脚手架的简单使用实例
Jul 10 Javascript
vue 实现根据data中的属性值来设置不同的样式
Aug 04 Javascript
一定要知道的 25 个 Vue 技巧
Nov 02 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
天津市收音机工业发展史
2021/03/04 无线电
php中常用字符串处理代码片段整理
2011/11/07 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
python实现flappy bird游戏
2018/12/24 Python
python实现学员管理系统
2019/02/26 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
数控技术与应用毕业生自荐信
2013/09/24 职场文书
建筑设计学生的自我评价
2014/01/16 职场文书
大学班长的职责
2014/01/27 职场文书
厨师长岗位职责
2014/03/02 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
2019广播稿怎么写
2019/04/17 职场文书
高一作文之暖冬
2019/11/09 职场文书