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

Nid*_*dhi 3 android email-validation pattern-matching

这些是无效的电子邮件。

email@domain.web
.email @ domain.com

我已在以下网站中检查了以上电子邮件,所有这些返回均无效。 http://isemail.info/关于 http://sqa.fyicenter.com/Online_Test_Tools/Email_Address_Format_Validator.php

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

是否有错误或我缺少什么?

Yog*_*dra 6

请检查您使用的是正确的条件,意味着您使用相同的条件。因为有时候我们反之亦然。我知道您使用的是同一件事,但请检查此方法。我相信它将对您有所帮助。

/ *如果电子邮件有效,则返回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;
}
Run Code Online (Sandbox Code Playgroud)


Pra*_*oop 4

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

email@domain.web
.email@domain.com

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

<username>@<mail-server>.<mail-servertype or server-location>
Run Code Online (Sandbox Code Playgroud)

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

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

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

无效案例:

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

  • 本地部分(您称之为“用户名”)不能有点“.”。除非用引号引起来,否则在它的开头或结尾。如果 Patterns.EMAIL_ADDRESS 说 `.email@domain.com` 有效,则违反了 RFC 规则:“句点 (“.”) 也可能出现,但不能用于开始或结束本地部分...” - https://tools.ietf.org/html/rfc3696 (3认同)