0

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

任何想法 ?

4

2 回答 2

1

添加分隔符。

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

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

请注意,如果分隔符出现在正则表达式本身中,则必须对其进行转义,并且不应充当分隔符,而应充当正常的匹配字符。所以/你的正则表达式中的每一个都必须被转义到\/(当然除了分隔符)。但是您的正则表达式中没有任何内容。

于 2013-11-07T15:15:19.897 回答
1

您应该以 开始正则表达式/并以/.

喜欢:

$pattern = "/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$/";
于 2013-11-07T15:15:23.377 回答