2010-08-06 117 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