2013-09-23 31 views
6

有人可以告诉我如何匹配4位数字在正则表达式中什么都没有?我一直在使用RegexBuddy,到目前为止我已经提出了这个问题,但帮助文本是说'或者匹配下面的正则表达式编号2 - 如果这个匹配尝试失败,则匹配尝试失败,如果匹配'管。正则表达式,数字或空

我想要两者中的任何一个提供积极的匹配。

^\d{4}|$ 
+0

上述正则表达式是正确的,我不认为。当然^意味着开始行和$意味着行结束,我不知道是否在你的情况下,将需要。但是'\ d {4} |'确实意味着“4位数或者什么都不是”。 –

+0

实际上匹配是否以4位数​​开始或什么都不是。所以1234a会匹配 –

回答

11

无论是4位或无:

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

这是最接近你试图做。

我会去一个稍微短下列操作之一:

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

^\d{4}|$ 

这正则表达式指:

^\d{4} OR $

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

当你使用一组,你得到:

无论^(?:\d{4})$^(?:)$(注意,OR运算的“限制”改变),然后将其等同于或者^\d{4}$^$

+1

可能值得解释的是'^ \ d {4} | $'会匹配'1234a',因为$不包含在第一个匹配 –

+0

@BobVale我可能还会添加'^ \ d {4} | $'作为一个整体将匹配任何东西,因为'$':) – Jerry

2

我认为你的方法是合理的。你需要保持运算符的优先考虑,但并请使用

^(\d{4}|)$ 

^\d{4}$|^$ 
1

如果需要OR

^(\d{4})?$