繁体   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