二代身份证校验[通俗易懂]

二代身份证校验[通俗易懂]百度一搜就能搜到很多身份证校验的例子,这个是最近做项目参考百度文库的demo修改后的一,js:[code="js"]//身份验证functioncheckIdCard(idCard){ varsexId; varsexText; varage; varErrors=newArray("验证通过!","身份证号码位数不对!","身份证号码出生…

大家好,又见面了,我是你们的朋友全栈君。百度一搜就能搜到很多身份证校验的例子,这个是最近做项目参考百度文库的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;
}

附件中是参考的文档

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153645.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 了解mssql数据库

    0x00前言介于这段时间比较忙,所以博客的更新也比较慢。本来想前几天就发这个mssql数据库的,但是因为mssql的结构比较复杂,利用方式也比较多,所以又去深入研究了一下mssql的数据库结构和各

    2021年12月11日
  • 使用 JavaScript 下载文件

    使用 JavaScript 下载文件使用JavaScript下载文件

    2022年5月29日
  • ASP.NET使用UpdatePanel实现AJAX

    ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果。其中的UpdatePanel就是设置页面中异步局部更新区域,它必须依赖于ScriptManager存在,

    2021年12月21日
  • spring boot springcloud(内网vue项目搭建)

    目录编写第一个REST接口读取配置文件profiles多环境配置热部署actuator监控自定义actuator端点统一异常处理异步执行随机端口编译打包在SpringTools4forEclipse中依次选择File->New->MavenProject,然后在出现的界面中按图1所示增加相关信息。图1创建maven项目完了上述操作之后,在pom.xml中添加SpringBoot的依赖…

    2022年4月16日
  • 虚函数后面的分号可有可无_虚函数需要实现吗

    虚函数后面的分号可有可无_虚函数需要实现吗const 和 =0要分开理解.首先理解一下分开的意思成员函数后面用 const 修饰,const表示this是一个指向常量的指针,即对象成为一个常量,即它的成员不能够变化.(默认情况下,this的类型是指向类类型非常量版本的常量指针。例如在Sales_data成员函数中,this的类型是Sales_data *const,即类一旦实例化一个对象后,this指向这个对象,是不能改变的,但是对象…

    2022年8月18日
  • 词向量算法「建议收藏」

    词向量算法「建议收藏」https://www.cnblogs.com/the-wolf-sky/articles/10192363.htmlhttps://blog.csdn.net/weixin_37947156/article/details/83146141基于神经网络的表示一般称为词向量、词嵌入(wordembdding)或分布式表示。神经网络的词向量和其他分布式类似,都基于分布式表达方式,核心依然是上…

    2022年6月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号