PHP和正则表达式,为什么这不起作用?

时间:2010-08-27 22:45:24

标签: php regex

if(strlen($_REQUEST['email']) >= 0 && preg_match('^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$', $_REQUEST['email']))
{
    $error = true;
    echo "Please enter a valid Email address";
}

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /var/www/team2648/OPIS/register.php on line 30

3 个答案:

答案 0 :(得分:4)

你忘记了the delimiters。添加它们。

另请注意,正则表达式会忽略一些完全有效的地址(例如foo@example.museum

答案 1 :(得分:3)

preg_match需要打开和关闭像perl这样的分隔符。例如,您希望在正则表达式字符串的开头和结尾包含斜杠,如

'/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'

答案 2 :(得分:1)

PHP附带内置函数,用于验证URL,电子邮件等流行数据。它被称为filter_var()

if ($_REQUEST['email'] && filter_var($_REQUEST['email'], FILTER_VALIDATE_EMAIL)) {
    // This makes your code much cleaner!
}