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

Jim*_*mmy 8 java regex

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

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

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

谢谢

aio*_*obe 13

只需追加|null:

[0-9]{5}|[0-9]{10}|null
Run Code Online (Sandbox Code Playgroud)

您可能知道,|是"或"运算符,字符串null与单词null匹配.因此它可以被读出来<your previous pattern> or null.


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


Jez*_*Jez 6

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

^(?:[0-9]{5}|[0-9]{10}|)$
Run Code Online (Sandbox Code Playgroud)


Tim*_*ker 5

[0-9]{5}|[0-9]{10}|null
Run Code Online (Sandbox Code Playgroud)

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

^(?:[0-9]{5}|[0-9]{10}|null)$
Run Code Online (Sandbox Code Playgroud)

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

编辑:如果你的意思是null=="空字符串",那么使用

^(?:[0-9]{5}|[0-9]{10}|)$
Run Code Online (Sandbox Code Playgroud)