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

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


相关推荐

  • 3D相册薄管理软件DOWNLOAD

    3D相册薄管理软件DOWNLOAD

    2021年8月11日
    54
  • 详解Android布局中gravity与layout_gravity属性[通俗易懂]

    详解Android布局中gravity与layout_gravity属性[通俗易懂]在android布局中,我们经常会用到“重心”-gravity这个属性。但是gravity有不同的类型:gravitylayout_gravity相对布局中的layout_center等属性今天我们就来具体说说。1、gravitygravity属性是对控件自身内容对自己的限定,拿布局文件test.xml举例来说:此时在TextView中并没有对gravity属性进行操作,文字内容如上图。接下

    2022年7月13日
    12
  • java中获取当前时间_java如何获得当前时间

    java中获取当前时间_java如何获得当前时间1、System.currentTimeMillis()获取标准时间可以使用System.currentTimeMillis()方法来获取,此方法优势是不受时区的影响,但是得到结果是时间戳的格式,如:1543105352845可以通过代码将时间戳转化为我们可以理解的格式:SimpleDateFormatformatter=newSimpleDateFormat(“yyyy-MM-dd’at’HH:mm:ssz”);Datedate=newDate(Syst..

    2022年9月6日
    17
  • SwipeRefreshLayout简单使用

    SwipeRefreshLayout简单使用Activity:importjava.text.DateFormat;importjava.util.Date;importandroid.os.Bundle;importandroid.os.Handler;importandroid.support.v4.widget.SwipeRefreshLayout;importandroid.support

    2022年6月25日
    22
  • 好用的Redis客户端操作工具[通俗易懂]

    好用的Redis客户端操作工具[通俗易懂]日常开发过程中,项目常常都会使用Redis来做缓存或者Session服务器,为了更直观方便,开发者常常会使用一些可视化工具,如RedisDesktopManager、RedisClent等,但界面UI做得不尽人意,作为当今时代,对软件的UI还是有所期待的,今天给大家分享一款,高颜值、功能强大的Redis客户端工具。AnotherRedisDesktopManager一个更快、更好、更稳定的redis桌面管理工具,可以运行于Linux、Windows、Mac三大平台,并且当加载大数量的key不.

    2022年6月5日
    27
  • Python判断字符串是否包含子字符串

    Python判断字符串是否包含子字符串Python如何判断一个字符串是否包含指定字符串?本文介绍Python判断一个字符串是否包含指定子串的4种方法。具有一定的借鉴价值。第一种使用in运算符最简单的方法是通过python的in运算符str=”Everyonehasaworld,quiteandlonely!”result=”world”instrresult2=”hello”i…

    2022年6月5日
    91

发表回复

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

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