Php 电子邮件验证-我的正则表达式代码有什么问题?
我正在尝试使用preg_match验证电子邮件地址 但是我得到了这个错误 警告:preg_match():未知修饰符“+” 这是我的密码Php 电子邮件验证-我的正则表达式代码有什么问题?,php,regex,preg-match,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); 有人能告诉
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);
有人能告诉我我的正则表达式有什么问题吗
谢谢使用
preg\u 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);
你也可以考虑使用< /P>
filter_var($email, FILTER_VALIDATE_EMAIL);
此外,这些表达式
(?:[a-z0-9-]*[a-z0-9])?
有点奇怪。大概可以用[a-z0-9-]*?
来代替它们,以简单起见。@Boristeider我认为应该是[a-z0-9-]+?
:)@HamZaDzCyberDeV我不这么认为,因为+
至少需要一个非捕获组中的构造,后面跟着?
,这意味着它是可选的(需要零次或一次)-因此表达式表示零次或多次(即a*
).再想一想,我甚至不确定是否需要?
-表达式可能很贪婪。我强烈建议不要自己编写此代码。即使空格
也是电子邮件中的有效字符。.重点是不要使用正则表达式解析电子邮件。.简单地说,*.
就是这样,您可以在电子邮件的右侧设置更严格的限制@
,它必须是一个有效的域名,但是是的,几乎所有的东西都在左边。