Java Regex验证

时间:2016-03-16 20:11:09

标签: java regex

我可能会错过一些东西,但我想知道为什么这种模式有效:

Pattern.compile("([0-9]{1,})");

尽管出现无效,但编译不会抛出异常。

很多

1 个答案:

答案 0 :(得分:2)

  

尽管出现无效

量词可以使用{n,m}语法表示,其中:

  • {n} - 完全n
  • {n,} - 至少n
  • {n,m} - 至少n但不超过m

来源:https://docs.oracle.com/javase/tutorial/essential/regex/quant.html

(请注意,没有{,m}量词表示"不超过m次")因为我们并不真正需要一个,我们可以通过{创建它{1}})

因此{0,m} 有效,仅表示"至少一次"。
为避免混淆,我们可以将{1,}量词替换为更为人熟知的{1,}形式来简化它,例如

+

很可能您也不需要通过用括号括起Pattern.compile("([0-9]+)"); 来创建捕获组1。我们可以访问与0组的帮助匹配的正则表达式,因此在大多数情况下这样的组1是多余的。