具有捕获组问题的正则表达式量词

时间:2017-03-02 16:51:08

标签: java regex quantifiers capturing-group

怎么了?

我试图让一些正则表达式工作,但我面对的是一些奇怪的" (?)行为。

我需要一个验证以下内容的正则表达式:

  • 只有数字(根本没有空格)
  • 从10或11开始
  • 必须为12个字符

在工作了一段时间后,我坚持这个:

^(10|11)[0-9]{10}$

它似乎按照需要运作,但我不满意,因为它乍一看有误导性。必须是12个最大字符,但它验证最多10个+'以'开头字符。

任何人都有更好的解决方案或关心来解释为什么会发生这种情况?

提前致谢(:

2 个答案:

答案 0 :(得分:1)

它没有按预期工作。
{10}表示您的情况正好是10位数 您可以使用{0,10}

Matches between 0 and 10 times, as many times as possible, giving back as needed

至于误导性部分 - 它的主观性,如果数字必须以10或11开头,那么它必须是2位数,你可以允许不超过10位

答案 1 :(得分:0)

我认为您需要的是以下内容:

^(10|11)[0-9]{0,10}$

这意味着它以10或11开头,长度可以在2到12个字符之间

Try it here