我总是觉得正常表达很头疼,谷歌搜索并没有真正帮助。我目前正在使用以下表达式(preg_match):/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/
但是,如果我想允许带有加号的电子邮件,这显然不起作用,例如:foo+bar@domain.com
我如何更改表达式以允许它?提前感谢您的帮助!
答案 0 :(得分:8)
您应该使用PHP内置正则表达式进行电子邮件验证,因为它涵盖了所有内容:
filter_var($email, FILTER_VALIDATE_EMAIL)
请参阅filter_var
和FILTER_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})$/