2015-11-04 95 views
0

如何讓我的字符串只通過測試,如果字符串中的每個字符都在正則表達式中?正則表達式匹配整個字符串

這是我到目前爲止有:

String w = theApplet.Word.getText().toLowerCase(); 
if(w.matches(".*[a-z-_]+.*")){ 
    theApplet.words.add(w); 
    theApplet.str.setText("The word: "+w+" has been added to the list"); 
} 

然而,該字符串是有效的,即使它包含無效字符,只要它包含了正則表達式的字符至少爲1。

+3

'if(w.matches(「[a-z -_] +」))'? – Pshemo

+1

這就是'。*'在你的正則表達式中的含義。我假設你可以刪除那些 – njzk2

+0

'.'匹配任何字符,除非你用'/'轉義它,並且你正在使用'*'來惡化問題,這意味着任意次數) 「任何字符」。「)。 – XenoRo

回答

1

.*裝置

[a-z-_]+「零次或多次匹配任何字符」意味着「匹配任何小寫字符或破折號( - )或下劃線(_)一次或多次」。

因此,第一部分幾乎消耗整個字符串,如果至少有一個小寫字符/短劃線/下劃線,則正則表達式返回true。

只需刪除.*即可強制所有字符爲小寫字母/破折號/下劃線。

+0

感謝您的答案,這和Pshemo的工作完美無缺。 – user2975192