编写一个card.js
var aCity={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:"國外"} ;
function isIdCardNo(sId)
{
var iSum=0 ;
var info='' ;
var result = new Array() ;
if(sId.length!=15 && sId.length!=18)
{
result[0] = false ;
result[1] = "身份证号码长度错误";
return result;
}
if(sId.length==15)
{
//15位身份證驗證
if (isNaN(sId))
{
result[0] = false ;
result[1] = "身份证号码格式错误";
return result;
}
if(aCity[parseInt(sId.substr(0,2))]==null)
{
result[0] = false ;
result[1] = "非法地区";
return result ;
}
var sBirthday="19"+sId.substr(6,2)+"-"+Number(sId.substr(8,2))+"-"+Number(sId.substr(10,2));
var d=new Date(sBirthday.replace(/-/g,"/")) ;
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
{
result[0] = false ;
result[1] = "非法生日";
return result ;
}
}
else
{
//18位身份證驗證
if(!/^\d{17}(\d|x)$/i.test(sId))
{
result[0] = false ;
result[1] = "非身份证号码";
return result;
}
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null)
{
result[0] = false ;
result[1] = "非法地区";
return result ;
}
var sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/")) ;
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
{
result[0] = false ;
result[1] = "非法生日";
return result ;
}
for(var i = 17;i>=0;i --)
iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
if(iSum%11!=1)
{
result[0] = false ;
result[1] = "非法证号";
return result ;
}
}
result[0] = true ;
var Sex_Flag = (sId.length==15) ? sId.substr(14,1) : sId.substr(16,1); //男性為奇數,女性為偶數
result[1] = "合法证件\r\n\r\n证件基本信息为:"+aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(Sex_Flag%2?"男":"女") ;
return result ;
}
jsp界面:
function checkResult(w)
{
var sId = w.value ;
if(sId != "")
{
var result = isIdCardNo(sId);
if(result[0] == false )
{
alert(result[1]);
$("#age").val('');
$("#birthday").val('');
w.focus();
}
else
{
//真正使用時,屏蔽掉該分支即可
alert(result[1]);
}
}
}
<input name="user.identifyCard" id="identifyCard" onblur="checkResult(this)">
分享到:
相关推荐
本篇将详细探讨如何使用JavaScript进行15位和18位,特别是18位带有字母“X”的身份证号码的验证。 首先,我们需要理解身份证号码的结构。15位身份证号码由6位地区码、7位出生日期码和2位顺序码组成;18位身份证号码...
### SQL15位和18位公民身份证校验函数知识点详解 #### 一、背景介绍 在进行数据录入时,确保身份证信息的合法性至关重要。不正确的身份证信息将导致数据的有效性和准确性大打折扣。为此,设计了一款专门用于校验15...
同时,为了保护用户隐私,验证身份证号码时不应直接显示完整的号码,而应进行脱敏处理,例如仅显示前6位和后4位。 总之,PHP验证身份证号码涉及字符串操作、正则表达式以及特定的数学算法。理解身份证号码的结构和...
2. **长度检查**:验证身份证号码的长度是否为18位。可以使用`id.size()`来检查字符串长度,如果长度不等于18,就返回错误信息。 3. **字符类型检查**:检查每个字符是否都是数字,这可以通过遍历字符串并用`...
- 校验码:最后一位,可以是0-9或X,用于校验整个身份证号码的正确性。 4. **正则表达式**:在JavaScript中,常使用正则表达式进行字符串匹配和验证。身份证号码的验证可以通过编写一个特定的正则表达式来完成,...
从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 将这17位数字和系数相乘的结果相加。 用加出来和除以11,取余数。 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11...
在Java编程中,身份证号码验证...在处理用户输入时,可以调用此类的方法来验证身份证号的有效性,确保数据的准确性。对于压缩包中的"qq"文件,可能是相关的Java源代码文件,可以查看其具体实现,学习并理解其中的细节。
在JavaScript中,身份证号验证是一个常见的需求,特别是在用户注册、个人信息填写等场景...此外,为了更好的用户体验,可以考虑使用正则表达式进行初步的格式检查,例如检查是否只包含数字以及长度是否在15或18位之间。
2. **位数验证**:根据身份证号码的位数(15位或18位)进行不同的验证逻辑。 - **15位验证**:检查日期格式是否正确,同时考虑到闰年和平年的不同。 ```javascript var ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05...
验证身份证号是否合法? Private Sub Command1_Click() Dim a%(17), w(), x$, s$, sum%, i%, y% Do '这个循环用来保证输入的字符串是17位的 s = Text1.Text Loop While Len(s) <> 17 w = Array(7, 9, 10, 5, 8,...
前6位代表出生地的行政区域代码,接着8位是出生日期(年月日),然后3位是顺序码,最后1位是校验码,校验码可能是数字或大写的X。 在HTML中实现身份证号码验证,通常会结合JavaScript进行。`code.htm`可能是一个...
4. **顺序码(第十五位至十七位)**:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号。其中,奇数分配给男性,偶数分配给女性。 5. **校验码(第十八位数)**: - **十七位数字本体...
在Java中实现18位身份证格式验证涉及到多个步骤,主要包括:校验位计算、出生日期转换以及地区编码验证。下面将详细介绍这些知识点。 1. **身份证号码结构** - 中国18位身份证号码由17位数字和最后一位校验码组成...
如果你需要在数据库中存储和验证身份证信息,可以使用ADO.NET或Entity Framework等库来连接和操作数据库。 在实际应用中,身份证验证往往是身份认证系统的一部分,可能会结合其他信息如姓名、手机号等进行多因素...
1. **长度验证**:首先确保身份证号码为15位或18位,且15位号码全部由数字组成,而18位号码的前17位为数字,最后一位为数字或“X”。 ```javascript if(!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) { alert...
4. 校验码(第18位):也称为验证码或检验位,用于检测身份证号码的正确性,可为0-9或X。 身份证验证程序的核心是校验码的计算。校验码的计算方法如下: 1. 将前17位数字分别乘以不同的系数(系数为:7,9,10,5,8,4,...
4. **校验码**(第十八位,仅18位身份证有此位):通过特定算法计算得出,用于校验身份证号码的有效性。 #### 三、验证逻辑详解 接下来,我们将基于上述结构分析,详细介绍具体的验证逻辑。 1. **初步验证**: - ...
需要注意的是,虽然这个函数能验证身份证号码的结构和校验码,但它无法验证身份证号码实际存在的真实性。真实的身份证号码还需要考虑性别、出生日期等信息的合法性,这需要进一步的逻辑处理。例如,可以通过`Date....
身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。为了确保数据的准确性和一致性,在处理用户输入时通常需要对身份证号码进行...