我试图创建一个正则表达式来检查是否已输入有效的电子邮件地址。我的正则表达式有问题。这里是我使用的源代码:正则表达式验证电子邮件地址
if (!Pattern.matches("^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-z]{2,})$", s)) {
et.setError("Enter a valid Email Address");
}
我在做什么错了?
我试图创建一个正则表达式来检查是否已输入有效的电子邮件地址。我的正则表达式有问题。这里是我使用的源代码:正则表达式验证电子邮件地址
if (!Pattern.matches("^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-z]{2,})$", s)) {
et.setError("Enter a valid Email Address");
}
我在做什么错了?
这没有把戏:
([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7})
public final static boolean isValidEmail(CharSequence target) {
return ((!TextUtils.isEmpty(target)) && (android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches()));
}
你可以看到更多的默认模式Patterns | Android Developers
我不知道你的意图是用正则表达式来打,而Android有自己内置的方法来验证的电子邮件地址
boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
它是可用的,因为姜饼
您应该对正则表达式进行的唯一真正的验证是检查“@”。关于这个话题已经有十亿个问题了......这是一个非常有道理的原因,为什么你不应该把它过分复杂化。 – tenub
@tenub除了Android有一系列内置模式可供使用的事实之外,为什么只在电子邮件验证正则表达式中检查'@'? – admdrew
*我做错了什么?*要生硬......使用正则表达式来验证电子邮件地址。 [这是丑陋的,难以控制的,很难找出错误。](http://ex-parrot.com/~pdw/Mail-RFC822-Address.html)咬紧牙关,做更深入的字符串解析和分析看看电子邮件是否真的有效。 – Makoto