【发布时间】:2017-07-22 12:34:50
【问题描述】:
怎么了?
我正在尝试让一些正则表达式起作用,但我正面临一些“奇怪”(?)行为。
我需要一个验证以下内容的正则表达式:
- 只有数字(根本没有空格)
- 以 10 或 11 开头
- 必须为 12 个字符
在这方面工作了一段时间后,我陷入了困境:
^(10|11)[0-9]{10}$
它似乎按预期工作,但我并不满意,因为乍一看它会产生误导。最多必须是 12 个字符,但它会验证最多 10 个 + 'starts with' 字符。
任何人有更好的解决方案或关心解释为什么会发生这种情况?
提前致谢(:
【问题讨论】:
-
我不明白如果它按要求工作有什么问题......你不喜欢正则表达式字符串的样子......?
-
不是我不喜欢它,而是有一个 10 个字符长的验证,它实际上验证了 12 个,在对代码进行维护时会产生误导。
-
如果您有眼睛问题,请使用
^(?=(10|11))[0-9]{12}$ -
我投票结束这个问题,因为这是一个关于代码美学外观的问题。
标签: java regex quantifiers capturing-group