将电子邮件地址与地址标记匹配的正则表达式

时间:2012-08-16 14:26:50

标签: regex email

  

可能重复:
  Is there a php library for email address validation?
  How to validate an email in php5?

我知道有很多关于电子邮件地址正则表达式的问题。我的问题有一个特定的要求,我一直无法找到答案。

我需要一个匹配电子邮件地址并允许address tags 的正则​​表达式,例如“testing+tags@gmail.com”。我发现大多数正则表达式都在包含标记的电子邮件地址上失败。

注意请不要指向this link。我正在寻找一些实用的东西,而不是完美的

编辑我知道大多数网络应用框架中都存在内置验证。 RoR,PHP,Django等都内置了它。但有时候,无论出于何种原因,都有特殊的需求。也许用户无法使用验证。也许他们正在用一些没有内置验证功能的模糊语言编写他们的应用程序,或者拥有它们,但它们已经过时了。在这种情况下,正则表达式仍然有用

2 个答案:

答案 0 :(得分:8)

可以 使用filter_var来验证电子邮件

var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));

您的案例示例:

echo filter_var('bob+long@example.com', FILTER_VALIDATE_EMAIL) !== false? 'Valid': 'Invalid';

答案 1 :(得分:6)

我个人最喜欢的一直是:

/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

另一个受欢迎的也是

/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/

如果你在PHP中这样做,并且如果你的问题可行,我会建议使用filter_var,否则建议。如果您需要一个实用且被理解为不完美的正则表达式,这仅仅是一个建议。