在preg_match中更改 eregi 不起作用


Changing eregi in preg_match doesn't work

我的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]:未找到结束分隔符"^"

知道吗?

你应该以 / 开头正则表达式,也以 / 结尾。

喜欢:

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

添加分隔符。

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

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

请注意,如果分隔符

出现在正则表达式本身中,则必须对其进行转义,并且不应充当分隔符,而应充当普通匹配字符。因此,正则表达式中的每个/都必须转义到'/(当然,分隔符除外)。但是您的正则表达式中没有任何内容。