Php Regex电子邮件-如何允许电子邮件中使用plus符号?

Php Regex电子邮件-如何允许电子邮件中使用plus符号?,php,regex,validation,preg-match,email-validation,Php,Regex,Validation,Preg Match,Email Validation,我总是觉得正则表达式令人头痛,而谷歌搜索并没有真正起到帮助作用。我目前正在使用以下表达式(preg_match):/^[[u a-z0-9-]+(\.[u a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/ 然而,如果我想允许带有加号的电子邮件,这显然是行不通的,例如:foo+bar@domain.com 我需要如何更改表达式才能允许它?提前感谢所有的帮助 尝试将\+添加到字符集合[]: /^[_a-z0-9-]+(.[_a-z0-9-\+

我总是觉得正则表达式令人头痛,而谷歌搜索并没有真正起到帮助作用。我目前正在使用以下表达式(preg_match):
/^[[u a-z0-9-]+(\.[u a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/

然而,如果我想允许带有加号的电子邮件,这显然是行不通的,例如:foo+bar@domain.com


我需要如何更改表达式才能允许它?提前感谢所有的帮助

尝试将
\+
添加到字符集合
[]

/^[_a-z0-9-]+(.[_a-z0-9-\+]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$/
您的正则表达式可以更改为其他正则表达式:


它允许在需要的位置使用
+
字符。但无论如何它是

您应该使用PHPs内置正则表达式进行电子邮件验证,因为它涵盖了所有内容:

filter_var($email, FILTER_VALIDATE_EMAIL)

请参阅和(或查看实际的beast)。

您不应该使用正则表达式验证电子邮件地址(除非您愿意妥协),请参阅Yeap。这是一个很好的答案+1如果您想知道,
FILTER\u VALIDATE\u EMAIL
使用正则表达式。你可以在网上看到,谢谢-真棒的回答!但是,它仍然不能验证foo+bar@domain.com例如,我们正在升级我的php,希望它在最新的稳定版本中得到修复!抱歉-它正在工作,我收到电子邮件时使用了$u GET-应该使用%2b而不是URI中的+,filter\u var工作得很好@桑格兰杰:那太奇怪了。刚刚用PHP5.2.0(功能为
filter\u var
的第一个版本)进行了测试,它对我的设置起到了作用。只有当你有一个尾随的换行符或什么的时候,它才可能失败啊,哦,好吧,那么:]这是我第一次给一个错误的答案+1:)
filter_var($email, FILTER_VALIDATE_EMAIL)