【发布时间】:2014-08-27 10:54:25
【问题描述】:
我在这段代码上工作了几个小时。我想在正则表达式代码中处理这些邮件地址:
text@text(Dot)de
text(@)text(Dot)de
text(at)text(Dot)de
text|at|text(Dot)de
text@text.de
text(@)text.de
text(at)text.de
text|at|text.de
text @ text.de
text (@) text.de
text (at) text.de
text |at| text.de
你能为我提供一些东西吗?我最终得到:[-0-9a-zA-Z.+_]+(@|\(@\)|at)+[-0-9a-zA-Z.+_]+\.(de|com|net|org)
但它不起作用:(
【问题讨论】:
-
如果太复杂,为什么不为每个可能的版本创建一个正则表达式,循环它们,如果其中任何一个匹配,你可以接受它。记录和修改更容易,因为看起来可能会有更多这些“隐藏”的电子邮件格式,将来可能需要这些格式。
-
/[-0-9a-zA-Z.+_]+\s*((@|at)|\((@|at)\)|\|(@|at)\|)\s*[-0-9a-zA-Z.+_]+(\.|\(dot\))(de|com|net|org)/ig(匹配所有样本,但谁知道还有什么。首先不推荐这个一般概念。) -
中间部分可以匹配
(?:\|at\||\(at\)|\(@\)|@) -
对于php你应该考虑使用filter_var函数php.net/filter_var