android.util.Patterns.EMAIL_ADDRESS 正在验证无效电子邮件

android.util.Patterns.EMAIL_ADDRESS is validating invalid emails

这些是无效的电子邮件。

email@domain.web
.email@domain.com

我在以下网站查看了上述邮件,所有这些returns无效。 http://isemail.info/about http://sqa.fyicenter.com/Online_Test_Tools/Email_Address_Format_Validator.php.

然而,android.util.Patterns.EMAIL_ADDRESS 模式验证了两者。

是否有错误或我遗漏了什么?

使用正则表达式匹配下面的模式。

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


private Matcher matcher;
private Pattern pattern = Pattern.compile(EMAIL_PATTERN);


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

希望对您有所帮助。

请检查您是否使用了正确的条件意味着您使用了相同的 if 条件。因为有时我们反之亦然。 我知道您使用的是相同的东西,但请检查此方法。我相信它会对你有所帮助。

/* 如果电子邮件有效,则 returns true 否则 return false */

@SuppressLint("DefaultLocale")
public boolean checkForEmail(EditText edit, String editName) {
    String str = edit.getText().toString();
    if (android.util.Patterns.EMAIL_ADDRESS.matcher(str).matches()) {
        return true;
    }
    toastMsg(_context.getString(R.string.please_enter_valid).toString()+" "+editName+ " "
            );
    return false;
}

两个似乎都是有效的电子邮件地址

email@domain.web
.email@domain.com

因为任何电子邮件地址都包含三个组成部分

<username>@<mail-server>.<mail-servertype or server-location>

这里 android.util.Patterns.EMAIL_ADDRESS 使用正则表达式验证所有三个组件,并检查所有三个组件是否放置正确。一些常见的令人困惑的例子是:

  1. com@web123.com 是有效的邮件地址,因为 com 可以是用户名,web123 可以是网络服务器的名称。

  2. .maths.apple@com.in 也是一个有效的邮件地址,因为 .maths.apple 可以是用户名,com 可以是网络服务器的名称。

大小写无效:

crick@.web.com 无效,因为 . 不能出现在 @ 之前或之后。任何邮件系统都无法识别用户名或邮件服务器名称。

嗯,最简单的方法是使用 java Class InternetAddress 而不是 Android。实用程序...或正则表达式