身份证号码正则表达式

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

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

...全文
8991 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
coobai 2013-07-29
  • 打赏
  • 举报
回复
引用 2 楼 chunls0 的回复:
那这样的话就是说最后一位只能输入X? 如果要输入其他字母就不行嘞?
身份证最后一位如果是字母 除了 X 之外,还有其他什么字母?
WangYing1685 2013-07-29
  • 打赏
  • 举报
回复
验证成功,很好使用:@"^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$"
salecn 2011-01-03
  • 打赏
  • 举报
回复
来学习一下,呵呵 !
cnfcnf 2011-01-03
  • 打赏
  • 举报
回复
/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
381X 2011-01-03
  • 打赏
  • 举报
回复
/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
liaobc 2011-01-03
  • 打赏
  • 举报
回复
很多哦!百度一下
万猫学社 2011-01-03
  • 打赏
  • 举报
回复
一搜一大堆
Mr-Jee 2011-01-03
  • 打赏
  • 举报
回复
"^\d{15}(\d{2}[a-z0-9A-Z])?$"
十八道胡同 2011-01-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chunls0 的回复:]

那这样的话就是说最后一位只能输入X?
如果要输入其他字母就不行嘞?
[/Quote]
目前的省份证之后X和数字,没有其他字母
/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
tnnd_007 2011-01-03
  • 打赏
  • 举报
回复
完整的,支持老的和新的身份证

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 ;
}
rjianfeili 2011-01-02
  • 打赏
  • 举报
回复
\d{18}|\d{15}|\d{17}+[a-zA-Z]{1}
chunls0 2011-01-02
  • 打赏
  • 举报
回复
那这样的话就是说最后一位只能输入X?
如果要输入其他字母就不行嘞?
wuyq11 2011-01-02
  • 打赏
  • 举报
回复
/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧