以下是我正在尝试使用的正则表达式
$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 '_'
答案 0 :(得分:2)
尝试:
^([-!#\$%&'*+./0-9=?A-Z\^_`a-z{|}~])+@([-!#\$%&'*+/0-9=?A-Z\^_`a-z{|}~]+\\.)+[a-zA-Z]{2,4}\$
你需要逃避^。它是一个特殊字符,它向RE提供指令。
答案 1 :(得分:2)
您收到此错误是因为php要求在正则表达式模式之前和之后使用分隔符,在您的情况下,它假定为^
,并且在分隔符之后遵循修饰符,在您的情况下_
。因为没有这样的修饰符因此错误。将代码更改为:
$eregicheck = "/^([-!#\$%&'*+.\/0-9=?A-Z^_`a-z{|}~])+@([-!#\$%&'*+\/0-9=?A-Z^_`a-z{|}~]+\\.)+[a-zA-Z]{2,4}\$/";
P.S。:这看起来像一个复杂的正则表达式,你确定它不能简化吗? :P