可以简化诸如([0-9] {2} | [0-9] {4})之类的表达式吗?

时间:2012-11-22 10:08:47

标签: regex

换句话说,“只匹配2位数或4位数”。标题中的表达式工作正常,但我想知道是否使用我不知道的运算符看起来更干净,因为我只是学习正则表达式。

4 个答案:

答案 0 :(得分:4)

你喜欢

([0-9]{2}(?:[0-9]{2})?)

更好?我不确定这是否更简单,但不同。

但是如果你想要精确匹配2或4位数,你需要anchor你的表达式。否则,您将获得所有内容的部分匹配,其中至少包含2位数字。像这样的东西

 ^([0-9]{2}|[0-9]{4})$

或者

 \b([0-9]{2}|[0-9]{4})\b

请参阅此here on Regexr

答案 1 :(得分:4)

这个特殊的正则表达式可以改写为

(\d{2}){1,2}

或甚至(对于2和4的小值)

\d\d(\d\d)?

答案 2 :(得分:1)

用另一种形式改写,是的。简化,没有。

答案 3 :(得分:1)

至少你可以做到这一点

(\d{2}|\d{4})