用“at”验证的正则表达式

时间:2017-06-08 16:28:26

标签: java regex

当邮件的结构为“blabla@foo.com”时,我知道如何使用正则表达式验证电子邮件地址 有效的正则表达式如下所示:

([\w\-]([\.\w])+[\w]+@([\w\-]+\.)+[A-Za-z]{2,4})

但是在我的大学,我的教授确实有他们的电子邮件地址如下所示的网站:prof[at]foo.bla

此类电子邮件的正确正则表达式是什么?将@更改为[at]无效。

是否有针对此类问题的教程?你能推荐一下吗?

3 个答案:

答案 0 :(得分:3)

您可以在此处使用可选捕获 - 组中的|字符可用作逻辑or,因此:

(\w-+[\w]+(@|\[at\])([\w-]+.)+[A-Za-z]{2,4})

应该做的伎俩。如果您对它不感兴趣,可以将其设置为非捕获组(?:@|\[at\])。另请注意,方括号是转义的 - 如果要将它们视为文字字符而不是字符组指示符,则需要转义它们。

更新

由于您没有在原始问题中指定您使用的语言,因此我建议您使用该语言:

Pattern emailRe = Pattern.compile("(\\w[\\w.+\\-]+?(?:@|\\[at\\])[\\w\\-]+\\.[\\w\\-.]+)");
相反,它是一个更加坚实的模式。然后,您可以根据需要多次重复使用它来匹配字符串中的电子邮件,例如:emailRe.match(your_string) ...

答案 1 :(得分:2)

您可以使用(\w[-.\w]+(?:@|\[at\])[\w-]+\.[A-Za-z]{2,4})

只需添加一个非捕获组或锚|以匹配@\[at\],如上所述here

注意:您无需在-

内逃避.[]

答案 2 :(得分:1)

[]]在正则表达式中具有特殊含义,因此您必须将它们转义为字面匹配。因此,请在正则表达式中将@替换为\[at\]

([\w\-]([\.\w])+[\w]+\[at\]([\w\-]+\.)+[A-Za-z]{2,4})

您可以在regular-expression.info找到正则表达式教程。