2014-02-06 83 views
0

爲什麼在我在EditText小部件中鍵入電子郵件地址後,爲了使Error在EditText小部件中消失,需要我點擊空格和退格符?這裏是我使用的源代碼:正則表達式問題 - 驗證電子郵件地址 - Android

if (!Pattern.matches("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+(?:[A-Z {2}|com|org|net|gov|mil|biz|info|mobi|name|in|aero|jobs|museum)$", s)) { 
        et.setError("please enter a valid email address"); 
} 

爲什麼這樣做?我究竟做錯了什麼?任何幫助,將不勝感激!

+0

'錯誤' - 什麼錯誤? – Simon

+0

未輸入無效電子郵件地址時顯示在EditText旁邊的錯誤。這就是et.setError()方法所顯示的錯誤。 – user268397

+0

你的正則表達式中似乎有一個無關的拼寫錯誤'[< - Unbalanced'['A-Z {2}' – sln

回答

4

試圖通過這樣的:

boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher("[email protected]").matches(); 

其實你能提供檢查電子郵件地址的任何正則表達式將是不夠的,因爲這有一個巨大組的可能性(現在甚至還有域超過3個字母作爲TLD ...)。

Android提供了這種方法,所以使用它們並保存頭痛是一個好主意。

相關問題