这些是几封无效的电子邮件。
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
模式验证了两者。
是否有错误或我遗失了什么?
答案 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();
}
希望这有帮助。