当前位置:编程学习 > C#/ASP.NET >>

身份证号码正则表达式

身份证号码正则表达式 最后以为一位可以输入X等的
这是我现在用的
public bool IsIDcard(string str_idcard)
        {

            return System.Text.RegularExpressions.Regex.IsMatch(str_idcard, @"(^\d{18}$)|(^\d{15}$)");
        }

        
--------------------编程问答-------------------- /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/ --------------------编程问答-------------------- 那这样的话就是说最后一位只能输入X?
如果要输入其他字母就不行嘞? --------------------编程问答-------------------- \d{18}|\d{15}|\d{17}+[a-zA-Z]{1} --------------------编程问答-------------------- 完整的,支持老的和新的身份证

function    isChinaIDCard(StrNo){   
   StrNo    =    StrNo.toString()   
   if    (StrNo.length==18)   
   {   
             var    a,b,c   
             if    (!isInteger(StrNo.substr(0,17)))    {return    false}   
             a=parseInt(StrNo.substr(0,1))*7+parseInt(StrNo.substr(1,1))*9+parseInt(StrNo.substr(2,1))*10;   
             a=a+parseInt(StrNo.substr(3,1))*5+parseInt(StrNo.substr(4,1))*8+parseInt(StrNo.substr(5,1))*4;   
             a=a+parseInt(StrNo.substr(6,1))*2+parseInt(StrNo.substr(7,1))*1+parseInt(StrNo.substr(8,1))*6;     
             a=a+parseInt(StrNo.substr(9,1))*3+parseInt(StrNo.substr(10,1))*7+parseInt(StrNo.substr(11,1))*9;     
             a=a+parseInt(StrNo.substr(12,1))*10+parseInt(StrNo.substr(13,1))*5+parseInt(StrNo.substr(14,1))*8;     
             a=a+parseInt(StrNo.substr(15,1))*4+parseInt(StrNo.substr(16,1))*2;   
             b=a%11;   
    
             if    (b==2)    //最后一位为校验位   
             {   
             c=StrNo.substr(17,1).toUpperCase();    //转为大写X   
             }   
             else   
             {   
             c=parseInt(StrNo.substr(17,1));   
             }   
    
             switch(b)   
             {   
     case    0:    if    (    c!=1    )    {alert("身份证好号码校验位错:最后一位应该为:1");return    false;}break;   
     case    1:    if    (    c!=0    )    {alert("身份证好号码校验位错:最后一位应该为:0");return    false;}break;   
     case    2:    if    (    c!="X")    {alert("身份证好号码校验位错:最后一位应该为:X");return    false;}break;   
     case    3:    if    (    c!=9    )    {alert("身份证好号码校验位错:最后一位应该为:9");return    false;}break;   
     case    4:    if    (    c!=8    )    {alert("身份证好号码校验位错:最后一位应该为:8");return    false;}break;   
     case    5:    if    (    c!=7    )    {alert("身份证好号码校验位错:最后一位应该为:7");return    false;}break;   
     case    6:    if    (    c!=6    )    {alert("身份证好号码校验位错:最后一位应该为:6");return    false;}break;   
     case    7:    if    (    c!=5    )    {alert("身份证好号码校验位错:最后一位应该为:5");return    false;}break;   
     case    8:    if    (    c!=4    )    {alert("身份证好号码校验位错:最后一位应该为:4");return    false;}break;   
     case    9:    if    (    c!=3    )    {alert("身份证好号码校验位错:最后一位应该为:3");return    false;}break;   
     case    10:    if    (    c!=2    )   {alert("身份证好号码校验位错:最后一位应该为:2");return    false}   
             }   
             }   
   else    //15位身份证号   
             {   
             if    (!isInteger(StrNo))    {alert("身份证号码错误,前15位不能含有英文字母!");return    false}     
             }   
    
  
    
   switch(StrNo.length){   
   case    15:     return    true;

   case    18:     return    true;
  
   }   
  alert("输入的身份证号码必须为15位或者18位!");   
  return    false  ;
   }   
--------------------编程问答--------------------
引用 2 楼 chunls0 的回复:
那这样的话就是说最后一位只能输入X?
如果要输入其他字母就不行嘞?

目前的省份证之后X和数字,没有其他字母
/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/ --------------------编程问答-------------------- "^\d{15}(\d{2}[a-z0-9A-Z])?$" --------------------编程问答-------------------- 一搜一大堆   --------------------编程问答-------------------- 很多哦!百度一下 --------------------编程问答-------------------- /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/ --------------------编程问答-------------------- /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/ --------------------编程问答-------------------- 来学习一下,呵呵 ! --------------------编程问答-------------------- 验证成功,很好使用:@"^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$" --------------------编程问答--------------------
引用 2 楼 chunls0 的回复:
那这样的话就是说最后一位只能输入X?
如果要输入其他字母就不行嘞?


身份证最后一位如果是字母 除了 X 之外,还有其他什么字母?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,