我有以下正则表达式,如何修改它以允许空?
[0-9]{5}|[0-9]{10}
我希望它允许5位数字,10位数字或null
由于
答案 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}|)$