1

以下是我尝试使用的正则表达式

$eregicheck = "^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~]+\\.)+[a-zA-Z]{2,4}\$";

我改变了以下几行

return eregi($eregicheck, $emailtocheck);

return preg_match($eregicheck, $emailtocheck);

但我不知道为什么我会收到错误

Warning: preg_match() [function.preg-match]: Unknown modifier '_'
4

2 回答 2

2

尝试:

^([-!#\$%&'*+./0-9=?A-Z\^_`a-z{|}~])+@([-!#\$%&'*+/0-9=?A-Z\^_`a-z{|}~]+\\.)+[a-zA-Z]{2,4}\$

你需要逃避^。它是一个特殊字符,向 RE 提供指令。

于 2013-11-30T21:26:22.580 回答
2

您收到此错误是因为 php 在正则表达式模式之前和之后需要定界符,在您的情况下,它假定^在定界符后面跟随修饰符,在您的情况下_。由于没有这样的修饰符,因此错误。将代码更改为:

$eregicheck = "/^([-!#\$%&'*+.\/0-9=?A-Z^_`a-z{|}~])+@([-!#\$%&'*+\/0-9=?A-Z^_`a-z{|}~]+\\.)+[a-zA-Z]{2,4}\$/";

PS:这似乎是一个相当复杂的正则表达式,你确定它不能被简化吗?:P

于 2013-11-30T21:30:36.953 回答