Java 使用正则表达式:验证电子邮件地址
可能重复:Java 使用正则表达式:验证电子邮件地址,java,regex,Java,Regex,可能重复: 嗨,我是一个使用正则表达式的新手 我用这个正则表达式来验证邮件,但我不明白它的意思。有人能解释一下吗 mailPattern = Pattern.compile("[a-zA-Z_0-9]*[.[a-zA-Z_0-9]*]*@[a-zA-Z_0-9]*[.[a-zA-Z_0-9]*]*.[a-zA-Z]{2,3}"); 我向你推荐一个优秀的网站来开始学习正则表达式 但是你的正则表达式看起来不好。无需将asterix设置为一组 下面是错误代码:[[a-zA-Z_0-9]*] 您需要
嗨,我是一个使用正则表达式的新手 我用这个正则表达式来验证邮件,但我不明白它的意思。有人能解释一下吗
mailPattern = Pattern.compile("[a-zA-Z_0-9]*[.[a-zA-Z_0-9]*]*@[a-zA-Z_0-9]*[.[a-zA-Z_0-9]*]*.[a-zA-Z]{2,3}");
我向你推荐一个优秀的网站来开始学习正则表达式 但是你的正则表达式看起来不好。无需将asterix设置为一组 下面是错误代码:[[a-zA-Z_0-9]*] 您需要在正则表达式的某些部分使用+而不是*等 这里解释了使用正则表达式验证电子邮件(我建议您阅读并使用他们的正则表达式,而不是您的):
您可以查看关于正则表达式的JavaSE教程 如果您使用的是Java,一个更简单的选择是使用JavaMail的
InternetAddress
类来验证您的地址:
public boolean isEmailValid(String email) {
try {
new InternetAddress(email);
return true;
}
catch (Exception e) {
return false;
}
}
这将根据以下内容执行验证。真的,没有必要去尝试自己的正则表达式,也没有必要去模仿别人的正则表达式。只需使用JavaMail的内置实用程序,并继续进行更有意义的工作。这不是验证电子邮件地址的完整模式。看一下我的链接,链接中指定的答案很有用,但不是使用Java的最佳解决方案。Java/JavaMail已经有了一个基于RFC822规范解析电子邮件地址的方法。使用它比直接使用任何正则表达式更可取。
.name
已经存在了十年了!但不,每个TLD最多只有三个字符。哦,本地部分不允许使用+
这样的东西(这是在使用更奇特的字符之前,比如%
),对吗?而IDN并不存在。这个正则表达式的问题太多了:(完全同意。我首先试着写一篇关于所有错误的文章,最后编辑了我的文章以添加到网站的链接;)哦,是的,那个网站。请注意,您链接到的页面本质上是这样说的:“此正则表达式验证所有有效的电子邮件地址(顺便说一句,当我说‘所有电子邮件地址’时,我的意思是‘所有与此正则表达式匹配的东西’;我不在乎实际有效的电子邮件地址与此不匹配存在)。”循环推理最精妙。