8

有人可以告诉我如何在正则表达式中匹配 4 位数字或什么都不匹配吗?我一直在使用 RegexBuddy,到目前为止我已经想出了这个,但是帮助文本是说“或者匹配下面的正则表达式 2 - 如果这个匹配失败,则整个匹配尝试失败”关于管道后的模式。

我希望两者中的任何一个都能提供积极的匹配。

^\d{4}|$
4

3 回答 3

14

4位数或无:

^(?:\d{4}|)$

这与您尝试做的最接近。

我会选择以下稍微短一点的:

^(?:\d{4})?$

^\d{4}|$

该正则表达式意味着:

^\d{4}或者$

第一个将匹配任何以 4 位数字开头的字符串,而第二个将报告所有内容的匹配(它匹配字符串的结尾,并且由于没有指定字符,它将匹配所有字符串的结尾)。

当您使用组时,您将获得:

要么^(?:\d{4})$^(?:)$ (请注意 OR 运算符的“限制”已更改),然后等效于要么^\d{4}$^$

于 2013-09-23T10:38:09.907 回答
2

我认为你的方法是合理的。您确实需要牢记运算符优先级并使用

^(\d{4}|)$

或者

^\d{4}$|^$
于 2013-09-23T10:38:03.377 回答
1

我不认为它是否需要OR

^(\d{4})?$
于 2013-09-23T11:48:09.250 回答