2013-04-20 51 views
0

我有一個簡單的正則表達式模式來驗證名稱。但是當我運行它時,我得到了非法的字符範圍錯誤。我想通過轉義「\ s」它會允許一個空間,但編譯器仍然在抱怨。在正則表達式中獲取非法字符範圍:java

public boolean verifyName(String name) { 
    String namePattern = "^[\\p{L}]++(?:[',-\\s][\\p{L}]++)*+\\.?$"; 
    return name.matches(namePattern); 
} 

,這是我認爲不應該發生,因爲一個名字可能包含這些[',-\\s]

ANNY所以我在哪裏不理解錯誤?

+0

爲什麼你使用''++而不是'+' – Anirudha 2013-04-20 07:32:44

回答

7

不能有「從,到空白」的範圍。也許你想逃離-

\s不是空格,而是[ \t\r\n\v\f](空格,製表符,回車符,換行符,垂直製表符或換頁符)。

東西,將工作:

"[ ',-]" 

"[',\\- ]" 
+0

這樣的範圍應該如何......我只想讓撇號,連字符,逗號或空間 – Obby 2013-04-20 07:19:32

+0

如果你想要一個空間,請使用空格。如果你把連字符放到最後,你不需要轉義它:'[', - ]' – 2013-04-20 07:25:21

+0

它爲我做了。 – Obby 2013-04-20 07:37:05

相關問題