簡體   English   中英

如何在android中驗證電子郵件?

[英]How to make validation for Email in android?

我正在開發一個應用程序,其中我有電子郵件編輯文本字段,我在其中進行了一些驗證,但當我輸入像jj@gm.cim這樣的電子郵件時,它無法正常工作,但這是錯誤的,正確的驗證是jj@gmail.com

我怎么能這樣呢?

這是代碼:-

public boolean validation(String mobile,String pass,String email){
    if (mobile!=null && mobile.length() >= 7 && mobile.length() <= 15) {
        if (pass.length() >= 4 && pass.length() <= 8) {
            if (isValidEmail(email)) {
                return true;
            } else {
                m_EmailEditText.setError("Invalid EmailID");
                return false;
            }
        } else {
            m_PasswordEditText.setError("password must be between 4 to 8 characters long");
            return false;
        }
    } else {
        m_MobileEditText.setError("mobile number must be between 7 to 51 characters long");
        return false;
    }
}
// This is validation for email……….and link to above code….
private boolean isValidEmail(String email) {
    String emailPattern = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
            + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

    Pattern pattern = Pattern.compile(emailPattern);
    Matcher matcher = pattern.matcher(email);
    return matcher.matches();
}

如果您想使用正則表達式,請嘗試這種方式來獲取有效的電子郵件

public static boolean isEmailValid(String email) {
    boolean isValid = false;

    String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
    CharSequence inputStr = email;

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

或者,如果您想使用默認驗證,請嘗試這種方式

boolean isEmailValid(CharSequence email) {
   return android.Util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

你也可以使用,

public class EmailValidator {

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 EmailValidator() {
    pattern = Pattern.compile(EMAIL_PATTERN);
}

/**
 * Validate hex with regular expression
 * 
 * @param hex
 *            hex for validation
 * @return true valid hex, false invalid hex
 */
public boolean validate(final String hex) {

    matcher = pattern.matcher(hex);
    return matcher.matches();

}
 }

用於驗證 EmailID 的函數

private boolean isEmailValid(String email) {

    String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@" + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
            + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$";
    CharSequence inputStr = email;
    Pattern pattern = Pattern.compile(regExpn, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputStr);
    if (matcher.matches())
        return true;
    else
        return false;

}

參考安卓模式

它是 android inbuild 正則表達式方法。

https://developer.android.com/reference/android/util/Patterns.html

public final static boolean isValidEmail(CharSequence target) {
 return !TextUtils.isEmpty(target) &&   android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

來自此 SO 鏈接的答案 - https://stackoverflow.com/a/7882950/3879847

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM