我試圖創建一個正則表達式來檢查是否已輸入有效的電子郵件地址。我的正則表達式有問題。這裏是我使用的源代碼:正則表達式驗證電子郵件地址
if (!Pattern.matches("^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-z]{2,})$", s)) {
et.setError("Enter a valid Email Address");
}
我在做什麼錯了?
我試圖創建一個正則表達式來檢查是否已輸入有效的電子郵件地址。我的正則表達式有問題。這裏是我使用的源代碼:正則表達式驗證電子郵件地址
if (!Pattern.matches("^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-z]{2,})$", s)) {
et.setError("Enter a valid Email Address");
}
我在做什麼錯了?
這沒有把戲:
([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7})
public final static boolean isValidEmail(CharSequence target) {
return ((!TextUtils.isEmpty(target)) && (android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches()));
}
你可以看到更多的默認模式Patterns | Android Developers
我不知道你的意圖是用正則表達式來打,而Android有自己內置的方法來驗證的電子郵件地址
boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
它是可用的,因爲薑餅
您應該對正則表達式進行的唯一真正的驗證是檢查「@」。關於這個話題已經有十億個問題了......這是一個非常有道理的原因,爲什麼你不應該把它過分複雜化。 – tenub
@tenub除了Android有一系列內置模式可供使用的事實之外,爲什麼只在電子郵件驗證正則表達式中檢查'@'? – admdrew
*我做錯了什麼?*要生硬......使用正則表達式來驗證電子郵件地址。 [這是醜陋的,難以控制的,很難找出錯誤。](http://ex-parrot.com/~pdw/Mail-RFC822-Address.html)咬緊牙關,做更深入的字符串解析和分析看看電子郵件是否真的有效。 – Makoto