Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式:验证电子邮件地址_Java_Regex - Fatal编程技术网

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并不存在。这个正则表达式的问题太多了:(完全同意。我首先试着写一篇关于所有错误的文章,最后编辑了我的文章以添加到网站的链接;)哦,是的,那个网站。请注意,您链接到的页面本质上是这样说的:“此正则表达式验证所有有效的电子邮件地址(顺便说一句,当我说‘所有电子邮件地址’时,我的意思是‘所有与此正则表达式匹配的东西’;我不在乎实际有效的电子邮件地址与此不匹配存在)。”循环推理最精妙。