2013-06-04 71 views
0

爲什麼這會返回false我輸入的任何正常單詞?正則表達式返回false的驗證

if(!guestbook.getName().matches("[a-zA-Z0-9\\s]")) { 
     errors.rejectValue("name", "stringFormat.falseCharacters", "You are only allowed to use numbers, letters and spaces for the name."); 
    } 

我必須缺少一些東西。

回答

1

你的正則表達式只匹配一個字符長的字符串。
要匹配字符的一個或多個號碼將其更改爲:

"[a-zA-Z0-9\\s]+" 

您可能還會發現這個(IMO大)Regular-Expressions reference有用。

1

你需要的是[a-zA-Z0-9\\s]+。最後加上+

0

因爲您應該在正則表達式的末尾添加'+',否則您只需要匹配一個字符。

0

在正則表達式中,您可以在範圍末尾使用+來指定「多於一個」,而在您的情況下,您只能探測長度爲1的表達式。

0

試試這個正則表達式 「^ [A-ZA-Z0-9 \ s] + $」,

if(!guestbook.getName().matches("^[A-Za-z0-9\\s]+$")) { 
    errors.rejectValue("name", "stringFormat.falseCharacters", "You are only allowed to use numbers, letters and spaces for the name."); 
}