我总是觉得正则表达式很头疼,谷歌也帮不上忙。我目前使用以下表达式(preg_match): /^[_a-z0-9-]+('.[_a-z0-9-]+)*@[a-z0-9-]+('.[a-z0-9-]+)*('.[a-z]{2,3})$/
但是,如果我想允许电子邮件使用加号,这显然是行不通的,例如:foo+bar@domain.com
我需要如何改变我的表达式来允许它?提前感谢所有的帮助!
你应该使用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的实际野兽)。
您的错误正则表达式可以更改为另一个错误的正则表达式:
/^['w-]+('.['w+-]+)*@[a-z0-9-]+('.[a-z0-9-]+)*('.[a-z]{2,3})$/
允许在需要的地方使用+
字符。但是是错的
尝试添加'+
到char集合[]
:
/^[_a-z0-9-]+(.[_a-z0-9-'+]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$/