2

换句话说,“只匹配 2 位或 4 位”。标题中的表达式效果很好,但我想知道是否有一种更简洁的方式使用我不知道的运算符,因为我只是在学习正则表达式。

4

4 回答 4

4

你喜欢

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

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

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

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

或这个

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

在 Regexr 上看到这里

于 2012-11-22T10:11:56.027 回答
4

这个特定的正则表达式可以重写为

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

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

\d\d(\d\d)?
于 2012-11-22T10:15:19.843 回答
1

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

于 2012-11-22T10:09:42.977 回答
1

最多你可以做到这一点

(\d{2}|\d{4})
于 2012-11-22T10:10:23.600 回答