身份证验证

function checkIdCard(id){
var result=null;
var regExp = /^[a-zA-Z][0-9]{6}\([\w]{1}\)$/ ; //用于匹配香港身份证
if (id.length == 15) {
result=id.match(‘\^(11|12|31|51|15|65|54|64|45|81|82|23|22|21|13|14|63|37|41|32|34|35|36|43|42|44|46|62|61|51|52|53|71|33|50)\\d{13}$‘);
if(null==result){
return ‘身份证号有误!‘;
}
return null;
} else if (id.length == 18) {
result=id.match("\^(11|12|31|51|15|65|54|64|45|81|82|23|22|21|13|14|63|37|41|32|34|35|36|43|42|44|46|62|61|51|52|53|71|33|50)\\d{15}[Xx0-9]$");
if(null==result){
return ‘身份证号有误!‘;
}

var check = 0;
var checkNum = new Array(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7);
var checkNum2 = new Array( "1", "0", "X", "9", "8", "7", "6", "5", "4","3", "2" );
for (var i = 0; i < 17; i++) {
check += id.substring(16-i,17-i) * checkNum[i];
}
if(checkNum2[(check % 11)]!=id.substring(17,18)){
return ‘身份证号有误!‘;
}
return null;
}else if(regExp.test(id)){
return null
}
else {
return ‘身份证号有误!‘;
}
}

/**
* @ 身份证号生日年份
* 421022198810064521 => 1988
* 421022881006452 => 1988
*/
function getBirthdayYearFromIdCard(idCard){
if (idCard == undefined) {
return null;
}
if (idCard.length == 15) {
return "19" + idCard.substring(6, 8);
}
if (idCard.length == 18) {
return idCard.substring(6, 10);
}
return null;
}

/**
* @ 身份证号生日月份
* 421022198810064521 => 10
* 421022881006452 => 10
*/
function getBirthdayMonthFromIdCard(idCard){
if (idCard == undefined) {
return null;
}
if (idCard.length == 15) {
return idCard.substring(8, 10);
}
if (idCard.length == 18) {
return idCard.substring(10, 12);
}
return null;

}

/**
* @ 身份证号生日月份
* 421022198810064521 => 10
* 421022881006452 => 10
*/
function getBirthdayDayFromIdCard(idCard){
if (idCard == undefined) {
return null;
}
if (idCard.length == 15) {
return idCard.substring(10, 12);
}
if (idCard.length == 18) {
return idCard.substring(12, 14);
}
return null;

}

/**
* @ 身份证号与生日效验
*/
function checkIdCardAndBirthday(idCard, birthday){
var idCardResult = checkIdCard(idCard);
if (idCardResult == null && birthday != ‘‘) {
var yearFromIdCard = getBirthdayYearFromIdCard(idCard);
var monthFromIdCard = getBirthdayMonthFromIdCard(idCard);
var dayFromIdCard = getBirthdayDayFromIdCard(idCard);
var birthday_year = birthday.substring(0, 4);
var birthday_month = birthday.substring(5, 7);
var birthday_day = birthday.substring(8, 10);
if (yearFromIdCard != birthday_year) {
return "出生年份与身份证不符。";
}
if (monthFromIdCard != birthday_month) {
return "出生月份与身份证不符。";
}
if (dayFromIdCard != birthday_day) {
return "出生日期与身份证不符。";
}
}
return null;
}

时间: 2024-10-12 14:11:21

身份证验证的相关文章

身份证验证(java)

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Hashtable; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; p

基于JS的身份证验证(完整版)

var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加权因子 var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]; // 身份证验证位值.10代表X function checkIdcard(idCard) { idCard = trim(idCard);//去掉字符串头尾空格 if (idCard.length == 15) { return is

Jsp注册页面身份证验证

<!--身份证验证 --><script type="text/javascript">function isCardNo(Idcardnumber) { alert(11111); // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var id=$("#Idcardnumber").val();//var id=$("#Idcardnumber")是获取In

java 18位身份证验证小组件idchecker

原文:java 18位身份证验证小组件idchecker 源代码下载地址:http://www.zuidaima.com/share/1550463500012544.htm 代码运行结果: 其它调用方法: package com.zuidaima.idchecker.test; import cn.idchecker.check.Checker; /** * idchecker测试 * @author http://www.zuidaima.com * */ public class Test

java身份证验证

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Hashtable; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;  

Java、Android身份证验证工具 支持15/18位、地区、生日和校验码验证

首先科普一下身份证的一些知识(知道的勿喷) 1-2 位:代表升级行政区代码 3-4 位:代表地级行政区划分代码 5-6 位:代表县区行政区分代码 7-14 位:代表出生年.月.日,例如:19900101 15-17 位:代表 顺序码,同一地区同年.同月.同日出生人的编号,奇数是男性,偶数是女性 18 位:代表校验码,如果是0-9则用0-9表示,如果是10则用X(罗马数字10)表示 注:另外有些15位的身份证号码,年份使用2位数字表示的,并且没有最后一位校验码:从1999年10月1日起,全国实行公

HDU 17新生赛 身份证验证【模拟】

身份证验证 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1611    Accepted Submission(s): 201 Problem Description 大学时代的小Q,是一个志向远大的热血青年,欲致力于国家网络建设.长年泡在电脑密集的地区潜心钻研以互联网为传输媒介,以个人计算机为终端,旨在实现休闲.交流.获得虚拟成就的

手机验证 和身份证验证

$("#memberLevelForm").validate({ rules: { "phone":{ required : true, isMobile : true } }, submitHandler: function() {}, messages: { "phone":{ required :"请输入手机号!", isMoblie : true } } }); }); //手机号码验证 jQuery.validato

C#实现中国身份证验证问题

C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 今天写的 C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 理论部分: 15位身份证号码=6位地区代码+6位生日+3位编号 18位身份证号码=6位地区代码+8位生日+3位编号+1位检验码 各省市地区国家代码前两位代码是: 北京 11 吉林 22 福建 35 广东 44 云南 53 天津 12 黑龙江 23 江西 36 广西 45 西藏 54 河北 13 上海 31 山东 37

【NumberValidators】大陆身份证验证

原文:[NumberValidators]大陆身份证验证 需要说明的是这里的大陆身份证识别并不是公安局联网的识别,而是按国标GB 11643进行的验证,所以其验证结果只能说符合国标规范,但不能保证该身份证一定真实存在,如果你实际需求是希望身份证一定真实存在,那么你可以在通过此类库初步验证后,再调用第三方(或牛逼的可以直连公安,毕竟所有的第三方其数据来源必定是公安局)以降低调用成本(公安调用一次两块钱,还不是有钱就能调用!!!) 转到正题,在NumberValidators中,大陆身份证相关的代码