2012-10-17 278 views
4

我想匹配包含至少一個字母和一個數字的字母數字字符串。有沒有簡單的方法將以下內容合併到單個正則表達式中?正則表達式匹配只包含字母和數字的字母數字

strValue.matches("[A-Z0-9]+") 
    && strValue.matches(".*[A-Z].*") 
    && strValue.matches(".*[0-9].*") 
+1

@ m.buettner:其實這是錯誤的。 'String.matches(String)'使用匹配整個字符串的Matcher.matches()。你描述的行爲是在'Matcher.find()'中實現的。 –

+0

噢好吧,我的壞。 –

回答

6

使用前瞻斷言。

strValue.matches("^(?=.*[A-Z])(?=.*\\d)[A-Z\\d]+$") 
+0

你爲什麼要使用行首? – lilalinux

+2

爲了確保在匹配開始之前沒有非字母數字字符(實際上,您還應該爲字符串的末尾添加一個錨點) –

+0

@xdazz我編輯了轉義序列,它們不正確。 – Juvanis

相關問題