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

时间:2015-04-07 12:54:31

标签: android pattern-matching email-validation

这些是几封无效的电子邮件。

  

email@domain.web
  .email @ domain.com

我已在以下网站上检查过上述电子邮件,所有这些都无效。 http://isemail.info/about http://sqa.fyicenter.com/Online_Test_Tools/Email_Address_Format_Validator.php

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

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

4 个答案:

答案 0 :(得分:4)

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

如果电子邮件有效,则

/ *返回true,否则返回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;
}

答案 1 :(得分:4)

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

  

email@domain.web
  .email @ domain.com

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

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

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

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

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

案例无效:

crick @ .web.com @ 之前和之后无效,如果放置,那么任何邮件系统都将永远无法识别用户名或邮件服务器名称。

答案 2 :(得分:1)

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

答案 3 :(得分:-1)

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

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();
}

希望这有帮助。