正则表达式允许数字范围,或为null

时间:2010-08-06 09:47:19

标签: java regex

我有以下正则表达式,如何修改它以允许空?

[0-9]{5}|[0-9]{10}

我希望它允许5位数字,10位数字或null

由于

3 个答案:

答案 0 :(得分:12)

只需附加|null

[0-9]{5}|[0-9]{10}|null

您可能知道,|是“或”运算符,字符串null与单词null匹配。因此,它可以被解读为<your previous pattern> or null


如果您希望模式与空字符串匹配,答案是不可能的。也就是说,例如,Matcher.matches()无法为空输入字符串返回true。如果你正在追求的是,那么可以使用上面的正则表达式而不是匹配str而是匹配""+str,这将导致"null" str实际上等于null

答案 1 :(得分:6)

如果用null表示空字符串,则需要:

^(?:[0-9]{5}|[0-9]{10}|)$

答案 2 :(得分:5)

[0-9]{5}|[0-9]{10}|null

应该这样做。根据您使用正则表达式的方式,您可能需要锚定它以确保它始终与整个字符串匹配,而不仅仅是八位数字符串中的五位子字符串:

^(?:[0-9]{5}|[0-9]{10}|null)$

^$锚定正则表达式,(?:...)是一个包含替换的非捕获组。

编辑:如果您的意思是null ==“空字符串”,请使用

^(?:[0-9]{5}|[0-9]{10}|)$