2016-08-30 44 views
0

我已經在我的應用程序中實現了電子郵件驗證,但問題是,該應用程序正在接受超過64個字符的本地域部分,而當我編寫..nnn .. @ gmail.com應用程序也接受這也符合RFC 3696規範#部分3,period(「。」)不能用於開始或結束本地部分,也不能出現兩個或更多個連續的時間段。如何在android中驗證電子郵件ID?

請幫我

private boolean isValidEmail(String email) {// validation for email Id 
    boolean isValid = false; 
    String expression = "^[\\w\\.-][email protected]([\\w\\-]+\\.)+[A-Z]{2,255}$"; 

    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); 
    Matcher matcher = pattern.matcher(email); 
    if (matcher.matches()) { 
     isValid = true; 

    } 
    return isValid; 
} 
+0

我需要編寫本地部分不超過64個以上的字符 – Raghav

+0

試試這個真棒驗證庫https://github.com/thyrlian/AwesomeValidation –

回答

1

試試這個,

String expression = "[a-zA-Z0-9._-][email protected][a-z]+\\.+[a-z]+"; 
+0

但是當我寫..aa .. @ gmail的。 com應用程序正在接受 – Raghav

1

的Android SDK有一個內置的用於查看電子郵件的正則表達式。

Patterns JavaDoc

Matcher matcher = Patterns.EMAIL_ADDRESS.matcher(email); 
return matcher.matches(); 
1
public final static boolean isValidEmail(CharSequence target) { 
    if (TextUtils.isEmpty(target)) { 
     return false; 
    } else { 
     return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches(); 
    } 
} 
1

試試這個

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class EmailValidation { 
private Pattern pattern; 
private Matcher matcher; 

private static final String EMAIL_PATTERN = 
    "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
    + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 

public EmailValidation() { 
    pattern = Pattern.compile(EMAIL_PATTERN); 
} 

public boolean isValidate(final String hex) { 
    matcher = pattern.matcher(hex); 
    return matcher.matches(); 
    } 
} 
+0

,但是當我編寫..和64個字符的本地域部分它是除了 – Raghav

+0

這是工作:) –

1

我建議在所有這些回答一個簡單的解決方案關於模式

public static boolean isEmail(String email){ 
    return android.util.Patterns.EMAIL_ADDRESS.matcher(inputData.trim()).matches() 
} 

this文檔。

2

試試這段代碼。如果電子郵件有效,則返回true。

android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();