android.util.Patterns.EMAIL\u地址正在验证无效电子邮件
这是几封无效的电子邮件 email@domain.webandroid.util.Patterns.EMAIL\u地址正在验证无效电子邮件,android,pattern-matching,email-validation,Android,Pattern Matching,Email Validation,这是几封无效的电子邮件 email@domain.web .email@domain.com 我在以下网站上查看了上述电子邮件,所有这些回复均无效。 然而,android.util.Patterns.EMAIL\u ADDRESS模式验证了两者 是否有bug或我遗漏了什么?使用正则表达式匹配下面的模式 String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\
.email@domain.com 我在以下网站上查看了上述电子邮件,所有这些回复均无效。
然而,
android.util.Patterns.EMAIL\u ADDRESS
模式验证了两者
是否有bug或我遗漏了什么?使用正则表达式匹配下面的模式
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条件。因为有时我们使用相反的方法。 我知道您使用的是相同的方法,但请检查此方法。我相信这会对你有帮助 /*如果电子邮件有效,则返回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;
}
两者似乎都是有效的电子邮件地址 email@domain.web
.email@domain.com 因为任何电子邮件地址都包含三个组件
<username>@<mail-server>.<mail-servertype or server-location>
@。
这里
android.util.Patterns.EMAIL\u ADDRESS
使用regex验证所有三个组件,并检查所有三个组件是否放置正确。一些常见的混淆示例如下:
com@web123.com
是有效的邮件地址,因为com
可以是用户名,web123
可以是web服务器的名称。数学。apple@com.in
也是有效的邮件地址,因为.math.apple
可以是用户名,com
可以是web服务器的名称crick@.web.com
无效,因为
不能在@
之前或之后出现。没有邮件系统能够识别用户名或邮件服务器名称。好吧,最简单的方法是使用java类InternetAddress而不是Android。乌提斯。。。或者regex第一个看起来很好。第二封邮件可能有问题。请尝试这种方式,希望这会对您有所帮助,第二封邮件无效-字符。(点、句点、句号)(ASCII:46),前提是它不是第一个或最后一个字符,并且它不是连续出现的(例如John.)。。Doe@example.com不允许)。来源:本地部分(您称之为“用户名”)的开头或结尾不能有点“.”,除非它在引号中。如果Patterns.EMAIL\u地址是。email@domain.com
是有效的,它违反了RFC规则:“句点(“.”)也可能出现,但不能用于启动或结束本地部分…”-android.util.Patterns.EMAIL\u地址也接受类似的内容test@t.t这绝对不是一个有效的电子邮件地址。只有一个字母的顶级域是不可能的。@Danielavadimirova,一个字母的TLD是有效的,它们只是还不存在。这种情况随时可能改变。看见