正则表达式,数字或空

时间:2013-09-23 10:35:49

标签: regex

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

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

^\d{4}|$

3 个答案:

答案 0 :(得分:11)

无论是4位还是全无:

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

这与你想要做的最接近。

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

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

^\d{4}|$

正则表达式意味着:

^\d{4}$

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

当您使用某个群组时,您将获得:

^(?:\d{4})$^(?:)$(请注意,OR运算符的'限制'已更改),这相当于^\d{4}$或{{1} }

答案 1 :(得分:2)

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

^(\d{4}|)$

^\d{4}$|^$

答案 2 :(得分:1)

我不认为它是否需要 OR

^(\d{4})?$