2010-08-06 133 views

回答

5

如果空你指的是空字符串,你想:

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

应该这样做。根据您如何使用正则表达式,你可能需要固定在那里,以确保它会在整个字符串,而不仅仅是一个五位数子总是匹配一个八位数字的字符串中:

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

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

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

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

您只需将|null

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

正如你可能知道,|是 “或” 运算符,并且字符串null匹配单词null。因此它可以被读作<your previous pattern> or null


如果你想要模式匹配空字符串,答案是这是不可能的。也就是说,你无法做到,例如,Matcher.matches()对于空输入字符串返回true。如果这就是你之后,你可以用得到使用上面的正则表达式匹配不匹配str""+str这将导致"null"如果str实际上等于null

相关问题