正则表达式匹配数字2或4次

这是一个关于正则表达式的简单问题,但我没有找到答案。

我想确定一个数字出现的顺序是 还是 。我可以使用什么语法?

\d{what goes here?}

我试了 \d{2,4},但这个表达式也接受三位数字。

133678 次浏览

虽然没有特定的语法,但是有很多方法可以实现:

(?:\d{4}|\d{2})    <-- alternation: four digits if possible, else just two
\d{2}(?:\d{2})?    <-- two digits, plus two more if possible
(?:\d{2}){1,2}     <-- two digits, times one or two

例如,为了匹配由一个或多个字母 A-Z 后跟两个或四个数字的字符串,可以写 ^[A-Z]+(?:\d{4}|\d{2})$; 为了匹配由两个或四个数字组成的逗号分隔的列表,可以写 ^((?:\d{4},|\d{2},)*(?:\d{4}|\d{2})$^(?:\d{2}(?:\d{2})?,)*\d{2}(?:\d{2})$

(?<!\d)(\d{2}|\d{4})(?!\d)

这是正确的做法。公认的答案是错误的。

它将匹配3位(或5位)。

1) Check there is no digit before a sequence of 2, or 4 digits, or after a sequence of two or four digits.

  • (<!)语法为负向后查找

  • (?!)语法是负向前看。

以上这些方法适用于中间字符串:

If your search string has no content around it you could use the ^ and $ start and end of string anchors:

^\d{4}$|^\d{2}$