C#正则表达式 "?"号意思!

^\d{14}\d{3}?\w$上面是我网上搜的一个写"身份证号码的...这里,貌似"?"不是说,{3}可有可无的意思...求解... ^\d{14}\d{3}?\w$
上面是我网上搜的一个写"身份证号码的...
这里,貌似"?"不是说,{3}可有可无的意思...
求解
展开
 我来答
cmoooo
2013-06-08 · TA获得超过3587个赞
知道小有建树答主
回答量:741
采纳率:0%
帮助的人:654万
展开全部
没错,就是可有可无。

因为一代身份证号是十五位,二代的才是十八位,现在虽然一代的不多了,但还是有个别人的在使用。

另外你看整个正则,如果这三个数字不是可有可无,为什么还要分出来呢,直接在前面的14里加起来,为:^\d{17}\w$ 不是更好?

另外后面有一个\w,表示的是可以是字母、数字和下划线,不过这个有点不太准,因为有的身份证号后面直接是一个问号,\w不支持问号,遇到这样的身份证号可能会有问题,所以应该改成下面的模样兼容性更强一些:

^\d{14}(\d{3})?[\w\?]$
更多追问追答
追问
额...请问,你的写法,为什么和这个结果一样:

@"^\d{14}(\d{3})?[\w,\?]$"

[\w\?]不是要有字母和?号的意思么...
追答
还有数字也是可以的。
syht2000
高粉答主

2013-06-08 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
这个正则有问题,应该是^\d{14}(\d{3})?\w$ 这样才能表示那3位数字可以没有,然后可以匹配15位身份证
实际上这个也过于简单了,最后要写个A什么的一样能通过,常用的身份证验证的比如
^(^\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$
也就是表示如下三种都可以:
15位数字
18位数字
17位数字+X
追问
对..应该是有问题了...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MegaChou
2013-06-08 · 超过21用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:53万
展开全部
? -- 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
\d{3}? 这样就支持15位的身份证了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
简简单单丶诺言
2013-06-08
知道答主
回答量:12
采纳率:0%
帮助的人:11.2万
展开全部
就是后面的\d{3} 这一段可有可无的意思呀
追问
45272819910812w这个都不对...总共 15位,
如果表示\d{3}?的话...就可以匹配了...
况且...我记得 ?是匹配前导"字符",也就是说,如果是"可无"的意思的话,那应该修饰其前面一个字符,在这里应该修饰 {3}...但是我照这个想法去 测试..也没有匹配...也就是说:
452728199108122w总共 16位,也不匹配...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式