<script>
function checkIdcard(idcard1){
var idcard=document.forms[0].elements[idcard1].value;
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;
var idcard_array = new Array();
idcard_array = idcard.split("");
/*地区检验*/
if(area[parseInt(idcard.substr(0,2))]==null)
{
alert(Errors[4]);
return false;
}
/*身份号码位数及格式检验*/
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)){
alert(Errors[0]+"15");
return false;
}
else {
alert(Errors[2]);
return false;
}
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]){
alert(Errors[0]+"18");
return false; /*检测ID的校验位*/
}
else {
alert(Errors[3]);
return false;
}
}
else {
alert(Errors[2]);
return false;
}
break;
default:
alert(Errors[1]);
return false;
}
</script>
分享到:
相关推荐
身份证号码号码验证JS。可以非常严格的对所输入的号码进行验证,特别是有‘X’的,以及二代身份证。
最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。
通过上述分析可知,中国公民的身份证号码具有严格的结构和验证机制,确保每个号码的唯一性和准确性。了解这些基础知识有助于开发人员更好地处理和验证身份证号码数据,提高应用的安全性和用户体验。
在C#中进行身份证验证时,需要对身份证号码的格式、地区码、出生日期以及校验码进行严格的检查。对于18位身份证号码,还需要额外处理校验码的计算,以确保号码的完整性和准确性。以上知识和代码片段提供了一个基本...
总的来说,idcheck软件凭借其对GB 11643-1999标准的严格遵循,强大的批量校验功能,以及高效便捷的操作体验,成为身份证号码校验领域的一款实用工具。无论是数据处理人员还是业务运营者,都能从中受益,提高工作质量...
5. **校验码**:最后一位是校验码,根据前17位通过特定算法计算得出,用于验证身份证号码的正确性。 在类的实现过程中,可能会用到PHP的数组遍历来处理身份证号码的各个部分。例如,为了验证出生日期,可能需要将...
在IT行业中,身份证验证是常见的身份验证手段,特别是在中国的背景下,因为每个公民都有唯一的18位身份证号码。这里,我们关注的是一个自定义的PHP函数`checkNOId`,它用于验证身份证号码的有效性。这个函数接收三个...
在信息化社会,身份证号码的验证和查询功能在许多场景下都至关重要,例如用户注册、银行开户、网络购物等。本项目提供的是一款基于Java语言开发的身份证判断软件,具备身份证号码查询、验证以及性别判断的功能,并...
"免费身份证校验接口"意味着它提供了一个无需付费的身份证号码验证服务,这可能是通过调用第三方API或自定义的验证算法实现的。"还是比较不错的!"表达了对这个源码质量的肯定。 【标签】中的“游戏”指明了该源码的...
7. **公民身份号码结构**:身份证号码的前6位代表地区代码,接着的8位表示出生日期,接下来的3位是顺序码,最后1位是校验码,用于验证号码的正确性。 8. **法律效力**:身份证号码的变更不影响个人的法律责任和权利...
在中国,身份证验证通常指的是18位身份证号码验证。这种验证需要考虑到身份证号码的组成规则,包括地区码、出生日期码、顺序码和校验码。一个简单的身份证号验证正则表达式可以是: ```csharp string idCardRegex =...
5. **身份证验证**:中国的身份证号码有严格的格式规则,包括前六位表示地区码,接着的八位表示出生日期,最后四位表示顺序码和校验码。验证过程通常包括检查数字的合法性、校验码计算以及地区码的合理性。 6. **VS...
JS常用工具函数(压缩包中含有MD文件可自行查看)--包含:通用格式化时间、字符串验证-验证邮箱、手机号、电话号码、url地址、严格校验身份证号码,判断数据类型-是否是字符串、数字、Boolean、函数、对象、数组...
在用户注册页面有些需求要求的比较严格,需要对身份证验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客。此篇文章主要是讲解如何用javascript正则表达式验证身份证号码是否合法,需要的朋友可以参考下
1. 第三方服务:许多第三方服务提供商如阿里云、腾讯云等提供了身份证OCR(光学字符识别)API,可以自动识别身份证上的文字信息,包括姓名、性别、出生日期、地址和身份证号码。调用这些API,开发者只需将身份证图片...
- **一点通和实名认证用户**:这两个类型的账户通常不允许修改身份证号码,因为它们已经完成了严格的实名认证过程,如果需要变更,可能需要注销账户后重新注册。 - **原注册证件信息**:如果你注册时填写的证件信息...
4. 校验码(第18位):这是一个计算得出的数字或字母(X),用于验证整个身份证号码的正确性。它是根据前17位数字通过特定算法计算得出的,能确保号码的唯一性和准确性。 了解身份证号码的结构对于日常生活中的个人...
这段C#代码主要是验证身份证的开头和身份证的格式和长度是否正确,没有按照身份证的编码规则进行严格验证 /// /// 验证身份证是否合法 /// /// 要验证的身份证 public static bool IsIdCard(string idCard) { //...
然而,处理个人敏感信息如身份证号码时,必须遵守严格的隐私保护法规,确保数据的安全性和合规性。开发者和使用者都应具备数据保护意识,遵循相关法律法规,防止数据泄露,保护公民的隐私权益。 在技术实现上,...
比较严格的验证身份证号码。通过JavaScript实现。