2014-02-05 153 views
-4

我試圖創建一個正則表達式來檢查是否已輸入有效的電子郵件地址。我的正則表達式有問題。這裏是我使用的源代碼:正則表達式驗證電子郵件地址

if (!Pattern.matches("^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-z]{2,})$", s)) { 
        et.setError("Enter a valid Email Address"); 
} 

我在做什麼錯了?

+2

您應該對正則表達式進行的唯一真正的驗證是檢查「@」。關於這個話題已經有十億個問題了......這是一個非常有道理的原因,爲什麼你不應該把它過分複雜化。 – tenub

+0

@tenub除了Android有一系列內置模式可供使用的事實之外,爲什麼只在電子郵件驗證正則表達式中檢查'@'? – admdrew

+2

*我做錯了什麼?*要生硬......使用正則表達式來驗證電子郵件地址。 [這是醜陋的,難以控制的,很難找出錯誤。](http://ex-parrot.com/~pdw/Mail-RFC822-Address.html)咬緊牙關,做更深入的字符串解析和分析看看電子郵件是否真的有效。 – Makoto

回答

-1

這沒有把戲:

([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7}) 
1
public final static boolean isValidEmail(CharSequence target) { 
    return ((!TextUtils.isEmpty(target)) && (android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches())); 
} 

你可以看到更多的默認模式Patterns | Android Developers

+0

那麼你如何知道他們使用的是Android SDK或android.util'包? – Makoto

+0

因爲問題標有android – Triode

+0

包是否知道[email protected]或[email protected]ürzburg。 – Hannes

1

我不知道你的意圖是用正則表達式來打,而Android有自己內置的方法來驗證的電子郵件地址

boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); 

它是可用的,因爲薑餅

相關問題