Java中电子邮件验证的正则表达式
Posted
技术标签:
【中文标题】Java中电子邮件验证的正则表达式【英文标题】:regular expression for email validation in Java 【发布时间】:2011-02-15 07:39:51 【问题描述】:我正在使用以下正则表达式
(".+@.+\\.[a-z]+")
它接受#@#.com 作为有效的电子邮件。我应该使用什么模式?
【问题讨论】:
***.com/questions/3232/… 电子邮件验证没有好的和现实的正则表达式。语法(在 RFC 5322 中指定)太复杂了。 ***.com/questions/201323/… 雅虎有多大?他们不能正确地检查电子邮件地址的语法,你也不能。 twitter.com/edent/status/11687784947 这个问题必须每月至少问一次或什么的 【参考方案1】:这是一个比我能解释得更好的网页:http://www.regular-expressions.info/email.html(编辑:这似乎有点过时,因为它引用了已被 RFC 取代的 RFC 2822第5322章
另一个关于验证问题的有趣观点:http://www.markussipila.info/pub/emailvalidator.php
通常验证电子邮件地址的最佳策略是尝试向其发送邮件。
【讨论】:
【参考方案2】:您应该使用 apache-commons 电子邮件验证器。可以从here获取jar文件。
下面是一个简单的使用示例:
import org.apache.commons.validator.routines.EmailValidator;
boolean isValidEmail = EmailValidator.getInstance().isValid(emailAddress);
【讨论】:
【参考方案3】:如果有人想输入不存在的电子邮件地址,他会按照您选择的任何格式验证。
检查用户是否拥有他输入的电子邮件的唯一方法是将确认(或激活)链接发送到该地址并要求用户单击它。
因此,不要试图让用户的生活变得更加艰难。检查@
的存在就足够了。
【讨论】:
【参考方案4】:我通常使用以下一种:
([a-zA-Z0-9]+(?:[._+-][a-zA-Z0-9]+)*)@([a-zA-Z0-9]+(?:[.-][a-zA-Z0-9]+)*[.][a-zA-Z]2,)
【讨论】:
【参考方案5】:[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]2,4
【讨论】:
【参考方案6】:import java.util.regex.*;
class ValidateEmailPhone
public static void main(String args[])
//phone no validation starts with 9 and of 10 digit
System.out.println(Pattern.matches("[9]1[0-9]9", "9999999999"));
//email validation
System.out.println(Pattern.matches("[a-zA-Z0-9]1,[@]1[a-z]5,[.]1+[a-z]3", "abcd@gmail.com"));
【讨论】:
以上是关于Java中电子邮件验证的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章