正则表达式电子邮件 - 如何在电子邮件中添加加号?

Sam*_*ger 5 php regex validation email-validation preg-match

我总是觉得正常表达很头疼,谷歌搜索并没有真正帮助.我目前正在使用以下表达式(preg_match):/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/

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

我怎么需要改变我的表达才允许它?在此先感谢您的帮助!

mar*_*rio 8

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

filter_var($email, FILTER_VALIDATE_EMAIL)
Run Code Online (Sandbox Code Playgroud)

请参阅filter_varFILTER_VALIDATE_EMAIL(或https://github.com/php/php-src/blob/master/ext/filter/logical_filters.c#L499了解实际的野兽).

  • 抱歉 - 它正常工作,我使用$ _GET收到电子邮件 - 应该在URI中使用%2b而不是+,filter_var就像梦一样! (2认同)

Fai*_*Dev 6

错误的正则表达式可以更改为另一个错误的正则表达式:

/^[\w-]+(\.[\w+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/
Run Code Online (Sandbox Code Playgroud)

它允许+你想要它的角色.但无论如何这都是的.

  • 这是我第一次给******错误答案:) (2认同)