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

二代身份证校验[通俗易懂]百度一搜就能搜到很多身份证校验的例子,这个是最近做项目参考百度文库的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 企业微信通讯录回调密文解析及微信支付回调密文解析异常处理

    企业微信通讯录回调密文解析及微信支付回调密文解析异常处理企业微信通讯录回调密文解析及微信支付回调密文解析异常处理产生异常表现:javax.crypto.IllegalBlockSizeException:Inputlengthmustbemultipleof16whendecryp原因:因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制解决方案:替换jdk和jre中的local_policy.jar,US_export_policy.jar具体目录:1、jre目录/lib/security/policy/

    2022年5月18日
    39
  • Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStreamJavaIO流学习总结三:缓冲流转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54292148本文出自【赵彦军的博客】InputStream|__FilterInputStream|__BufferedInputStream首先抛出一个问题,有了InputStream为什么还要有Buffered

    2022年10月20日
    0
  • Android ListView等列表设置空布局

    Android ListView等列表设置空布局在Android平台上,listView是特别常用的组件之一,我们在向用户展示列表数据时,通常要考虑:列表有数据和无数据空的状态,因为网络环境各异,难免刷新失败什么的;在此之前我是使用ViewStub来实现,通过判断listview列表数据是否为空来设置ViewStub的隐藏和显示,或者设置lIstview的显示或隐藏;但是,对ViewStub不是特别的了解,把控不好,只是控

    2022年7月22日
    9
  • Java 三目运算符细节详解「建议收藏」

    Java 三目运算符细节详解「建议收藏」Java三目运算符细节详解@author:Jingdai@date:2020.09.24看到标题你肯定觉得三目运算符有什么好讲的,不是很简单嘛。我之前也是这么认为的,直到今天刷LeetCode遇到了一点问题,发现还是有些细节自己不知道的,现总结一下。短路问题首先我们都知道Java中&&和||的运算是具有短路效果的,如果逻辑运算符的第一部分能确定运算的结果,就不会再去计算逻辑运算符的第二部分,比如下面的代码,输出的i仍然是1,因为后面的运算短路了,没有计算。in

    2022年10月30日
    0
  • Cover Letter实用指南

    Cover Letter实用指南1、什么是CoverLetter?指的是投稿信2、coverletter的内容主要包括那些?应该简述所投稿件的核心内容、主要发现和意义,拟投期刊,对稿件处理有无特殊要求等(如“nottoreview”list)。另外,请附上主要作者的中文姓名、通讯地址、电话、传真和e-mail地址。此外有的杂志要求推荐几位审稿人及其联系方式。以及谁已经阅读过该文(当然是牛人)。

    2022年5月1日
    49
  • python 移动文件或文件夹操作

    python 移动文件或文件夹操作目录:1、python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法2、文件操作方法大全3、目录操作方法大全————————————————————————————–1、python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法。1.得到当前工作目录,即当前Python脚本工作的目录路径:os.getcwd()2.返回指定目录下的所有文件和目录名:os.li

    2022年5月7日
    283

发表回复

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

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