C#正则表达式 "?"号意思!
^\d{14}\d{3}?\w$上面是我网上搜的一个写"身份证号码的...这里,貌似"?"不是说,{3}可有可无的意思...求解...
^\d{14}\d{3}?\w$
上面是我网上搜的一个写"身份证号码的...
这里,貌似"?"不是说,{3}可有可无的意思...
求解 展开
上面是我网上搜的一个写"身份证号码的...
这里,貌似"?"不是说,{3}可有可无的意思...
求解 展开
4个回答
展开全部
没错,就是可有可无。
因为一代身份证号是十五位,二代的才是十八位,现在虽然一代的不多了,但还是有个别人的在使用。
另外你看整个正则,如果这三个数字不是可有可无,为什么还要分出来呢,直接在前面的14里加起来,为:^\d{17}\w$ 不是更好?
另外后面有一个\w,表示的是可以是字母、数字和下划线,不过这个有点不太准,因为有的身份证号后面直接是一个问号,\w不支持问号,遇到这样的身份证号可能会有问题,所以应该改成下面的模样兼容性更强一些:
^\d{14}(\d{3})?[\w\?]$
因为一代身份证号是十五位,二代的才是十八位,现在虽然一代的不多了,但还是有个别人的在使用。
另外你看整个正则,如果这三个数字不是可有可无,为什么还要分出来呢,直接在前面的14里加起来,为:^\d{17}\w$ 不是更好?
另外后面有一个\w,表示的是可以是字母、数字和下划线,不过这个有点不太准,因为有的身份证号后面直接是一个问号,\w不支持问号,遇到这样的身份证号可能会有问题,所以应该改成下面的模样兼容性更强一些:
^\d{14}(\d{3})?[\w\?]$
更多追问追答
追问
额...请问,你的写法,为什么和这个结果一样:
@"^\d{14}(\d{3})?[\w,\?]$"
[\w\?]不是要有字母和?号的意思么...
追答
还有数字也是可以的。
展开全部
这个正则有问题,应该是^\d{14}(\d{3})?\w$ 这样才能表示那3位数字可以没有,然后可以匹配15位身份证
实际上这个也过于简单了,最后要写个A什么的一样能通过,常用的身份证验证的比如
^(^\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$
也就是表示如下三种都可以:
15位数字
18位数字
17位数字+X
实际上这个也过于简单了,最后要写个A什么的一样能通过,常用的身份证验证的比如
^(^\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$
也就是表示如下三种都可以:
15位数字
18位数字
17位数字+X
追问
对..应该是有问题了...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
? -- 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
\d{3}? 这样就支持15位的身份证了。
\d{3}? 这样就支持15位的身份证了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是后面的\d{3} 这一段可有可无的意思呀
追问
45272819910812w这个都不对...总共 15位,
如果表示\d{3}?的话...就可以匹配了...
况且...我记得 ?是匹配前导"字符",也就是说,如果是"可无"的意思的话,那应该修饰其前面一个字符,在这里应该修饰 {3}...但是我照这个想法去 测试..也没有匹配...也就是说:
452728199108122w总共 16位,也不匹配...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询