2014-02-05 105 views
-4

我试图创建一个正则表达式来检查是否已输入有效的电子邮件地址。我的正则表达式有问题。这里是我使用的源代码:正则表达式验证电子邮件地址

if (!Pattern.matches("^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-z]{2,})$", s)) { 
        et.setError("Enter a valid Email Address"); 
} 

我在做什么错了?

+2

您应该对正则表达式进行的唯一真正的验证是检查“@”。关于这个话题已经有十亿个问题了......这是一个非常有道理的原因,为什么你不应该把它过分复杂化。 – tenub

+0

@tenub除了Android有一系列内置模式可供使用的事实之外,为什么只在电子邮件验证正则表达式中检查'@'? – admdrew

+2

*我做错了什么?*要生硬......使用正则表达式来验证电子邮件地址。 [这是丑陋的,难以控制的,很难找出错误。](http://ex-parrot.com/~pdw/Mail-RFC822-Address.html)咬紧牙关,做更深入的字符串解析和分析看看电子邮件是否真的有效。 – Makoto

回答

-1

这没有把戏:

([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7}) 
1
public final static boolean isValidEmail(CharSequence target) { 
    return ((!TextUtils.isEmpty(target)) && (android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches())); 
} 

你可以看到更多的默认模式Patterns | Android Developers

+0

那么你如何知道他们使用的是Android SDK或android.util'包? – Makoto

+0

因为问题标有android – Triode

+0

包是否知道[email protected]或[email protected]ürzburg。 – Hannes

1

我不知道你的意图是用正则表达式来打,而Android有自己内置的方法来验证的电子邮件地址

boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); 

它是可用的,因为姜饼

相关问题