Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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,我需要检查字符串(电子邮件地址的本地部分)是否除以下内容外没有其他内容: 字母(a-zA-Z) 数字(0-9) 强调 最多一点() 如何使用Javaregex 示例:a_1_b.c和a_b_1,应该可以,但是1.a_b.2和1_a*3应该被丢弃。你应该找到更多信息。如果你想验证电子邮件的正确性,你可能只需要依靠电子邮件来为你验证。这样,您就不必担心将RFC822规范的细节编码到正则表达式中。更不用说,如果你正在处理电子邮件地址,你可能想要一个简单的方式发送它们,图书馆也有。您可以通过以下方式

我需要检查字符串(电子邮件地址的本地部分)是否除以下内容外没有其他内容:

  • 字母(a-zA-Z)
  • 数字(0-9)
  • 强调
  • 最多一点()
如何使用
Javaregex


示例:
a_1_b.c
a_b_1
,应该可以,但是
1.a_b.2
1_a*3
应该被丢弃。

你应该找到更多信息。

如果你想验证电子邮件的正确性,你可能只需要依靠电子邮件来为你验证。这样,您就不必担心将RFC822规范的细节编码到正则表达式中。更不用说,如果你正在处理电子邮件地址,你可能想要一个简单的方式发送它们,图书馆也有。您可以通过以下方式验证电子邮件地址是否有效:

try {
    new InternetAddress(email).getAddress();
} catch (AddressException e) {
    // it's not valid
}

要检查您自己的格式,这应该可以:

Pattern p = Pattern.compile("[a-zA-Z0-9_]+[\\.]{0,1}[a-zA-Z0-9_]*");
  • a_1_b.c应该没问题
  • a_1b也是
  • 1.a_b.2和1_a*3应被拒绝

上测试它,假设也必须有一个'@',并且它必须在单个''.'之前(但不是紧接着之前),您可以这样做

final static private String charset = "[a-zA-Z0-9_]"; // separate this out for future fixes
final static priavte String regex = charset + "+@" + charset + "+\." + charset + "+";

boolean validEmail(String email) {
    return email.matches(regex);
}


regex
[\w]*\.[\w]+\w]+
应该可以用,我想。

你是在询问电子邮件地址还是你自己的格式?因为
foo+bar
是有效的电子邮件收件箱名称(如
foo+bar@example.com
)但将被您的验证拒绝。如果不尝试651K结果,可能会重复。这是关于我自己的格式。拒绝
foo+bar@example.com
应该没问题。我可以建议您点击“编辑”按钮,然后给问题一个更有用的标题吗?:)这不是一个完全相同的页面,但非常相关:虽然部分解决了用户的问题,但简单地链接另一个页面是一种弱点:-(不是-1,只是说,“…是的,当然,但阅读它并将其作为自己的想法发布更好?这就像为其他人使用谷歌,他甚至写道“它对我有用”,那又有什么意义呢?不要把它当作你自己的文章来发表——总是引用你的信息来源。我会把相关的信息拿出来,并把它放在文章里。把它作为一个来源和进一步阅读的资源来提供。但这对写这篇文章的人来说有点不公平,不是吗?我尊重你的评论,你可能会认为这是一个错误“弱酱油”,但这只是你的主观观点和你的观点。这不仅仅是我的观点。它在整个社区都很普遍。考虑和它联系起来的答案。简短的回答是“不”。“就像我说的,我不会否决它,因为我确实认为它很有用,只是它可能更有用。考虑到(从我自己回答的问题来看)这个特定的网站通常是谷歌的第一个结果,+1表示没有重新发明轮子。它将允许一些OP似乎不允许的东西(尽管如此,他可能正在寻找一个简单的案例,因为他不想手动覆盖所有案例。很难说。)@glowcoder:这一点很好,它实际上允许
Foo Bar
。解决这个案例的一个快速方法是检查
email.equals(新的InternetAddress(email.getAddress())
验证它不是那种形式。点可能在那里,也可能不在那里。问题是,最好使用
*
而不是
+
(点使用“?”)——建议的模式要求至少两个字符由点分隔。使用不区分大小写的标志并使用
\\?
而不是
[。]{0,1}
(在字符类中,不能转义为点)
模式。编译(“[a-z0-9\+\.?[a-z0-9\]*,模式。不区分大小写”)
@amdalal在这种情况下,前面被切掉的情况也是一样的。
regex=charset++\.+charset++”
我将
字符集作为一个单独的变量保留,因此如果您对其进行更改(例如添加破折号)您只需在一个位置更改它。毫无疑问,将
字符集
分开是个好主意,但是
可能不在字符串中。我最多只查找一个点。因此,您对不存在该点的情况是否满意?