有兩個問題與您當前的代碼:
- 的斜線意味着它真的是在尋找「/ @」,而不僅僅是「@」。你似乎認爲「/」在正則表達式中做了一些特殊的事情 - 事實並非如此。
- 您正在使用
matches()
,它試圖匹配輸入的整個;你想find
這將只是試圖找到匹配的正則表達式某處在輸入。
爲什麼你使用正則表達式?爲什麼不乾脆:
if (!valEmail.contains("@")) {
...
}
,將檢查該地址是否包含任何「@」標誌。如果要檢查是否有隻有一個「@」符號,你可以使用:
int atIndex = valEmail.indexOf('@');
if (atIndex == -1) {
// Handling for *no* @ sign
}
if (valEmail.indexOf('@', atIndex + 1) != -1) {
// Handling for multiple @ signs
}
如果做要使用正則表達式,也有可用的,而更復雜的電子郵件地址驗證的正則表達式。 (有很多不同的有效性的不同水平 - 確保你得到一個爲正則表達式的Java風格設計的。)我不會使用一個只是這個 - 但只使用正則表達式,你真的感興趣模式匹配。
如果你想使用正則表達式「至少一種非@,@由以下,隨後至少一種非@」你可以使用:
// TODO: Compile this once and reuse
Pattern pattern = Pattern.compile("[^@][email protected][^@]+");
Matcher matcher = pattern.matcher(valEmail);
if (!matcher.matches()) {
...
}
順便說一句,這一點:
catch(Exception ex){}
是從未一個好主意。請不要盲目忽略錯誤。
你有哪些寫正則表達式,我認爲你想要的電子郵件? – Herry 2012-04-25 06:12:51
我想檢查是否只有一個@字符出現在電子郵件地址使用正則表達式 – user1355385 2012-04-25 06:15:46
如果你想正則表達式的電子郵件檢查我的答案。 – Herry 2012-04-25 06:16:42