【发布时间】:2017-05-26 08:20:01
【问题描述】:
这是我初学者班的一些家庭作业。
一个组织已为所有客户分配了一个身份号码。身份证号格式如下:
2 个数字字符(不带前导 0 的数字),后跟 3 个数字字符(数字)和 3 个数字字符(数字),由单个空格分隔
或 3 个数字字符(不带前导 0 的数字)后跟 3 个数字字符(数字)和 3 个数字字符(数字),由单个空格分隔。
任何小于 10 000 000 或 >150 000 000 的数字都是无效的。
这是我的尝试:
([\\d]{2}[\\s][\\d]{3}[\\s][\\d]{3})|([\\d]{3}[\\s][\\d]{3}[\\s][\\d]{3})
但是,以下输出应该不起作用,但它们确实起作用:
153 394 111
943 293 492
098 302 203
感谢任何帮助。谢谢
以下是有效的输入:
11 304 982
39 683 234
139 920 393
以下是无效输入:
153 394 111
3 394 234
89 909 98
【问题讨论】:
-
为什么它们不能工作?我可以看到第三个有一个前导零(你根本没有检查那些),但是前两个有什么问题?
-
我什至无法理解描述。它应该不那么模棱两可,并提供示例。
-
顺便说一句,据我所知,您的表达式中的所有方括号都是多余的。
-
@EllenPage 我不明白为什么
153 394 111或943 293 492无效。它们匹配“3 个数字字符(不带前导 0 的数字)后跟 3 个数字字符(数字)和 3 个数字字符(数字),由单个空格分隔。”