<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function checkIdcard(idcard){
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 idcard,Y,JYM;
var S,M;
alert(idcard);
var idcard_array = new Array();
idcard_array = idcard.split("");
//地区检验
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
//身份号码位数及格式检验
switch(idcard.length){
case 15:
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg=/^[1-9][0-9]{5}[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}$/;//测试出生日期的合法性
} else {
ereg=/^[1-9][0-9]{5}[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}$/;//测试出生日期的合法性
}
if(ereg.test(idcard)) return Errors[0];
else return Errors[2];
break;
case 18:
//18位身份号码检测
//出生日期的合法性检查
//闰年月日:((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]))
//平年月日:((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]))
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[0]; //检测ID的校验位
else return Errors[3];
}
else return Errors[2];
break;
default:
return Errors[1];
break;
}
}
var sss = "370306830215053"
document.write (checkIdcard(sss))
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
分享到:
相关推荐
本篇将详细探讨如何使用JavaScript进行15位和18位,特别是18位带有字母“X”的身份证号码的验证。 首先,我们需要理解身份证号码的结构。15位身份证号码由6位地区码、7位出生日期码和2位顺序码组成;18位身份证号码...
18位身份证号码验证代码,js验证 ,javascript验证18位身份证代码,js验证身份证号码。
3. **身份证号码验证规则**:中国的身份证号码由18位数字组成,包括地区码、出生日期码、顺序码和校验码。验证时需检查: - 地区码:前6位,代表出生地的行政区域代码。 - 出生日期码:第7位到第14位,表示出生...
身份证号码一般有两种格式:15位与18位。其中: - **15位**:早期使用的身份证号码格式,现已不再新发,但仍然有效。 - **18位**:目前常用的身份证号码格式,包括地区码、出生日期码、顺序码和校验码四部分。 ####...
要使用JavaScript验证身份证号码,我们首先需要定义一个函数,例如`isValidIDCard`,接收一个身份证号码作为参数。这个函数的核心就是校验码的计算过程。以下是一个简单的实现: ```javascript function ...
- 考虑到15位身份证号码的情况,虽然现在18位身份证已经普及,但仍有老版15位号码存在。 - 校验码的验证,以确保身份证号码的合法性。 - 针对籍贯省市的获取,可能需要维护一个静态的行政区划代码库,或者利用网络...
- 第十八位是校验码,用于验证身份证号码的有效性。 ### JavaScript验证代码分析 #### 地区编码验证 - 通过一个名为`area`的对象来存储各地区的前两位数字及其对应的省份名称。 - 使用`parseInt(idcard.substr(0,2...
4. **校验码**(第十八位,仅18位身份证有此位):通过特定算法计算得出,用于校验身份证号码的有效性。 #### 三、验证逻辑详解 接下来,我们将基于上述结构分析,详细介绍具体的验证逻辑。 1. **初步验证**: - ...
kettle 提供了两个函数 getId15 和 getId18,分别用于将 15 位身份证号码转换为 18 位和将 18 位身份证号码转换为 15 位。 在 kettle 中,我们使用正则表达式来验证数据。正则表达式是一种基于模式匹配的字符串匹配...
中国居民身份证号码(ID)分为15位和18位两种,通常现在使用的是18位的。身份证验证涉及到更复杂的校验规则,包括地区代码、出生日期、顺序号和校验码等。以下是一个简单的18位身份证号码验证函数: ```javascript ...
身份证15位或18位验证
* 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 * p: 性别,奇数为男,偶数为女 * <p /> * 身份证18位编码规则:dddddd yyyymmdd xxx y ...
运用javascript进行身份证号码格式验证。
为了准确地验证身份证号码,我们需要构建一个正则表达式来匹配这些规则。以下是对每个部分的具体解释: 1. **地址码**(地区): - 表达式:`[1-9]\d{5}` - 解释:首位数字必须为1到9之间的任意一个数字,后面...
- **身份证号码长度检查**:如果身份证号码长度小于15位、等于16位、等于17位或者大于18位,则提示“证书必须是15位或18位”并返回。 - **身份证号码格式检查**:如果身份证号码不符合正则表达式`^\d{17}(\d|x)$`...
2. **精确模式**:更加细致地验证身份证号码的格式,包括检查出生日期的合理性等。 ```javascript /^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X)?$/ ``` 该正则表达式能够更准确地验证18位身份证...
- **函数设计**:`validId18`和`validId15`分别处理18位和15位的身份证验证。其中,`validId18`会计算加权和并通过`parityBit`数组匹配校验码;`validId15`则侧重于日期和性别位的合法性检查。 - **性别识别**:通过...
1. **长度验证**:首先确保身份证号码为15位或18位,且15位号码全部由数字组成,而18位号码的前17位为数字,最后一位为数字或“X”。 ```javascript if(!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) { alert...