js身份证验证超强脚本


Posted in Javascript onOctober 26, 2008

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];
alert(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];
alert(Errors[0]);
else return Errors[2];
alert(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];
alert(Errors[3]);
}
else return Errors[2];
alert(Errors[2]);
break;
default:
return Errors[1];
alert(Errors[1]);
break;
}
}

Javascript 相关文章推荐
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
Dec 02 Javascript
js计算两个时间之间天数差的实例代码
Nov 19 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
Nov 28 Javascript
jQuery的css()方法用法实例
Dec 24 Javascript
RequireJS入门一之实现第一个例子
Sep 30 Javascript
input框中的name和id的区别
Nov 16 Javascript
AngularJS自定义指令之复制指令实现方法
May 18 Javascript
JS实现带动画的回到顶部效果
Dec 28 Javascript
关于JavaScript中高阶函数的魅力详解
Sep 07 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
Nov 29 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
Aug 10 Javascript
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
javascript引导程序
Oct 26 #Javascript
javascript笔试题目附答案@20081025_jb51.net
Oct 26 #Javascript
Div自动滚动到末尾的代码
Oct 26 #Javascript
Firefox getBoxObjectFor getBoundingClientRect联系
Oct 26 #Javascript
js判断变量是否空值的代码
Oct 26 #Javascript
Prototype使用指南之selector.js说明
Oct 26 #Javascript
prototype Element学习笔记(Element篇三)
Oct 26 #Javascript
You might like
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
用PHP4访问Oracle815
2006/10/09 PHP
destoon之一键登录设置
2014/06/21 PHP
PHP解析RSS的方法
2015/03/05 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
JavaScript 动态生成方法的例子
2009/07/22 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
Python常用模块介绍
2014/11/21 Python
python简单文本处理的方法
2015/07/10 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
深入理解Python中的内置常量
2017/05/20 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
杭州联环马网络笔试题面试题
2013/08/04 面试题
售后主管岗位职责
2013/12/08 职场文书
大学生学业生涯规划
2014/01/05 职场文书
后勤主管岗位职责
2014/03/01 职场文书
社区健康教育工作方案
2014/06/03 职场文书
工程部主管岗位职责
2015/02/12 职场文书
自荐信怎么写
2015/03/04 职场文书
Python使用openpyxl批量处理数据
2021/06/23 Python
html5实现点击弹出图片功能
2021/07/16 HTML / CSS