电子邮件验证 - 我的正则表达式代码有什么问题?

时间:2013-05-11 14:22:16

标签: php regex preg-match

我正在尝试使用preg_match验证电子邮件地址..

但是我收到了这个错误..

  

警告:preg_match():未知修饰符'+'

这是我的代码

preg_match("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", $email, $matches);

有人能告诉我我的正则表达式有什么问题吗?

由于

1 个答案:

答案 0 :(得分:2)

使用preg_match时,需要在正则表达式周围放置分隔符。标准是/。如果在表达式中使用分隔符,则必须将其转义。

preg_match("/[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/", $email, $matches);

你也可以考虑使用

filter_var($email, FILTER_VALIDATE_EMAIL);