`

验证15位或18位身份证号,带X

    博客分类:
  • JAVA
 
阅读更多
编写一个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位带x身份证

    本篇将详细探讨如何使用JavaScript进行15位和18位,特别是18位带有字母“X”的身份证号码的验证。 首先,我们需要理解身份证号码的结构。15位身份证号码由6位地区码、7位出生日期码和2位顺序码组成;18位身份证号码...

    SQL15位和18位公民身份证校验函数

    ### SQL15位和18位公民身份证校验函数知识点详解 #### 一、背景介绍 在进行数据录入时,确保身份证信息的合法性至关重要。不正确的身份证信息将导致数据的有效性和准确性大打折扣。为此,设计了一款专门用于校验15...

    PHP精确验证身份证号

    同时,为了保护用户隐私,验证身份证号码时不应直接显示完整的号码,而应进行脱敏处理,例如仅显示前6位和后4位。 总之,PHP验证身份证号码涉及字符串操作、正则表达式以及特定的数学算法。理解身份证号码的结构和...

    C++中身份证号码验证代码

    2. **长度检查**:验证身份证号码的长度是否为18位。可以使用`id.size()`来检查字符串长度,如果长度不等于18,就返回错误信息。 3. **字符类型检查**:检查每个字符是否都是数字,这可以通过遍历字符串并用`...

    身份证号码验证程序 javascript验证的html文件

    - 校验码:最后一位,可以是0-9或X,用于校验整个身份证号码的正确性。 4. **正则表达式**:在JavaScript中,常使用正则表达式进行字符串匹配和验证。身份证号码的验证可以通过编写一个特定的正则表达式来完成,...

    身份证号验证Java实现

    从第一位到第十七位的系数分别为: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身份证号验证源代码

    在Java编程中,身份证号码验证...在处理用户输入时,可以调用此类的方法来验证身份证号的有效性,确保数据的准确性。对于压缩包中的"qq"文件,可能是相关的Java源代码文件,可以查看其具体实现,学习并理解其中的细节。

    js身份证号验证

    在JavaScript中,身份证号验证是一个常见的需求,特别是在用户注册、个人信息填写等场景...此外,为了更好的用户体验,可以考虑使用正则表达式进行初步的格式检查,例如检查是否只包含数字以及长度是否在15或18位之间。

    js验证身份证号码的有效方法

    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) &lt;&gt; 17 w = Array(7, 9, 10, 5, 8,...

    身份证号验证HTML代码

    前6位代表出生地的行政区域代码,接着8位是出生日期(年月日),然后3位是顺序码,最后1位是校验码,校验码可能是数字或大写的X。 在HTML中实现身份证号码验证,通常会结合JavaScript进行。`code.htm`可能是一个...

    利用ASP验证身份证号是否正确的代码

    4. **顺序码(第十五位至十七位)**:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号。其中,奇数分配给男性,偶数分配给女性。 5. **校验码(第十八位数)**: - **十七位数字本体...

    java实现的18位身份证格式验证算法

    在Java中实现18位身份证格式验证涉及到多个步骤,主要包括:校验位计算、出生日期转换以及地区编码验证。下面将详细介绍这些知识点。 1. **身份证号码结构** - 中国18位身份证号码由17位数字和最后一位校验码组成...

    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,...

    h5校验身份证号码

    4. **校验码**(第十八位,仅18位身份证有此位):通过特定算法计算得出,用于校验身份证号码的有效性。 #### 三、验证逻辑详解 接下来,我们将基于上述结构分析,详细介绍具体的验证逻辑。 1. **初步验证**: - ...

    验证身份证号码有效性的js

    需要注意的是,虽然这个函数能验证身份证号码的结构和校验码,但它无法验证身份证号码实际存在的真实性。真实的身份证号码还需要考虑性别、出生日期等信息的合法性,这需要进一步的逻辑处理。例如,可以通过`Date....

    使用Java正则表达式实现一个简单的身份证号码验证

    身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。为了确保数据的准确性和一致性,在处理用户输入时通常需要对身份证号码进行...

Global site tag (gtag.js) - Google Analytics