Regex电子邮件-如何在电子邮件中允许加号


Regex email - how to allow plus symbols in email?

我总是觉得正则表达式很头疼,谷歌也帮不上忙。我目前使用以下表达式(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_varFILTER_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})$/