百度一搜就能搜到很多身份证校验的例子,这个是最近做项目参考百度文库的demo修改后的
一,js:
//身份验证
function checkIdCard(idCard){
var sexId;
var sexText;
var age;
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 Y, JYM;
var S, M;
var idcard_array = new Array();
idcard_array = idCard.split("");
if (area[parseInt(idCard.substr(0, 2))] == null){
return Errors[1];
}
if(18!=idCard.length){
return Errors[4];
}
if(18==idCard.length){
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[3];
}
}else{
return Errors[2];
}
var year = idCard.substring(6,10);
var month = idCard.substring(10,12);
var day = idCard.substring(12,14);
var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
if(temp_date.getFullYear()!=parseFloat(year)
||temp_date.getMonth()!=parseFloat(month)-1
||temp_date.getDate()!=parseFloat(day)){
return Errors[2];
}
return 0;
}
return 0;
}
二,页面中引用
if(checkIdCard(idCard)!="0"){
$.dialog({type: "warn", content:checkIdCard(idCard), modal: true, autoCloseTime: 3000});
return false;
}
附件中是参考的文档
分享到:
相关推荐
一代15位身份证二代18位身份证正则表达式校验,带详细注释,每个字符注释,大厂通用
本文给大家分享一段超级全面的二代身份证号码验证程序,由JS编写而成,可以校验身份证的地址码、出生日期码、顺序码和数字校验码。是身份证去伪存真的一大利器。
通过excel公共函数计算二代公民身份证号码末位校验码知识.pdf
主要介绍了正则表达式实现二代身份证号码验证的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
用于验证第二代身份证,读取身份证中的信息跟图像. 里面提供了读取信息的接口及操作的源代码案例
先说,还有很多可以优化的地方。 1、比如加入15位身份证号的校验,嗯哼,15位的好像没有校验,那就只能...2、二代身份证增加位数至18,多出来的3位分别是出生年份的前两个数字和一位校验码 3、身份证各位置代表信息
第二身份证的验证函数,需要的就拿去吧。 哎太不厚道了。
基于第二代身份证号码最后一位的编码规则的验证规则: 判定条件一:第二代身份证号码位数一共18位 判定条件二:根据身份证最后一位号码的编码的规则
中国大陆公民的二代身份证号码均为18位,其中前6位代表出生地所在省、市、区,第7~14位代表出生年、月、日,15~17位代表同地同日出生的人的序列号,最后一位是校验码,是根据ISO 7064:1983标准计算来的,其中X代表...
由于响应速度极快,可以肯定不是联机校验正确性的,那也就是说第二代身份证除了大家都知道的几位表示生日和性别的规则以外,还有另外的自我校验规则。于是翻开页面源码查看,发现这段js没有被压缩,所以规则也很好懂...
校验身份证[第二代]合法性,获取身份证详细信息 安装:npm install idcard verify:校验身份证合法性,返回boolean值 var idCard = require('idcard'); /** * param:idcard(string) * return boolean */ idCard.verify...
实名制是许多网站都必备的功能,因此用户经常需要输入身份证号,但是我们无法连通公安局的数据库进行验证身份证和姓名地址是否匹配,因此可以根据身份证生成的规则来进行身份证格式的验证,以下仅介绍二代身份证的...
验证手机号,验证所有的身份证的合法性,验证邮箱合法性
(7)第二代身份证在制作时公安部专门为二代证的"造"了三个字:身份证反面的"居、 民、身" ,第二代证上的这三个字与一般电脑字库中的字有细微的区别,真证上"居、民"两个 字的横笔右边的三角与"尸"字头的右侧竖笔...
华大电子作为第二代居民身份证模块主要供应商之一,致力于长期潜心研究安全的非接触技术。近日,其推出的非接触芯片CIR72A04,性能卓越,安全可靠,可用于城市一卡通、小额支付、电子票证等。 非接触芯片CIR72A...