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

时间:2011-12-03 17:33:56

标签: php regex validation preg-match email-validation

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

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

我如何更改表达式以允许它?提前感谢您的帮助!

3 个答案:

答案 0 :(得分:8)

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

filter_var($email, FILTER_VALIDATE_EMAIL)

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

答案 1 :(得分:6)

您的wrong正则表达式可以更改为另一个wrong正则表达式:

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

允许您想要的+字符。但无论如何它都是 wrong

答案 2 :(得分:1)

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

/^[_a-z0-9-]+(.[_a-z0-9-\+]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$/