1

我正在使用 PHP eregi 函数,但我注意到它已被弃用。这是我的代码:

!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))

因此,我试图用 preg_match 替换该函数,但似乎我无法获得 preg_match 的正确模式,因为我收到以下代码错误:

!preg_match("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))

这是我从上面的代码中得到的错误:

Warning: preg_match(): No ending delimiter '^' found in

谢谢你的帮助。

4

5 回答 5

3

您需要在正则表达式的开头和结尾使用分隔符,通常/

!preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/", trim($_POST['email']))

手动输入:PCRE 介绍/分隔符

于 2013-10-01T11:20:28.037 回答
2

您需要分隔正则表达式:

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/",
            ^                                         ^
于 2013-10-01T11:20:20.910 回答
2

preg_match()希望您在正则表达式字符串的开头或结尾使用分隔符:

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/", trim($_POST['email']))

分隔符可以是多个字符,包括~, %, #, /, @, 等。请注意,当您选择分隔符时,如果该字符在正则表达式中使用,则必须使用反斜杠字符 ( \) 对其进行转义。例如,使用正则表达式

http://[0-9a-z]+\.com

与分隔符的组合/,将要求您逃避每一次出现/

/http:\/\/[0-9a-z]+\.com/

有关更多信息,请参阅PHP 手册

于 2013-10-01T11:29:03.377 回答
1

试试看,

!preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/i", trim($_POST['email']))

您必须使用/之类的分隔符

于 2013-10-01T11:21:28.713 回答
1

顺便说一句,为了验证电子邮件地址,您也可以使用filter_var函数。

$is_email_valid = filter_var($email, FILTER_VALIDATE_EMAIL);

详情: http: //php.net/manual/en/function.filter-var.php

于 2013-10-01T11:26:57.947 回答