在preg_match中更改eregi不起作用

时间:2013-11-07 15:13:18

标签: php preg-match eregi

我的PHP代码中包含此代码:

function IsEmail($email)
{
    $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
    return (eregi($pattern,$email)) ? true : false;
};

我的本​​地服务器给了我一个错误:

不推荐使用函数eregi()

所以我将代码修改为:

function IsEmail($email)
{
    $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
    return (preg_match($pattern,$email)) ? true : false;
};

现在我收到了这个错误:

警告:preg_match()[function.preg-match]:找不到结尾分隔符'^'

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

添加分隔符。

$pattern = "/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$/";

在这种情况下,我使用/作为分隔符。它在开始时发生一次,在结束时发生一次。

请注意,如果它出现在正则表达式本身中,则必须转义分隔符,并且不应该作为分隔符,而是作为正常匹配的char。因此,正则表达式中的每个/都必须转义为\/(当然除了分隔符)。但你的正则表达式中没有任何内容。

答案 1 :(得分:1)

您应该使用/开始正则表达式,并以/结束。

像:

$pattern = "/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$/";