正则表达式中出现意外的'['

时间:2013-04-30 23:39:19

标签: php regex

$p1 = "[0-9]{4}";
$p2 = "[0-9]{1,6}";
if($name == null || $id == null)
{
   // Assume that I have a error message set up
   die();
}
else if(!preg_match($p1,$id))
{
   die();
}
else
{
   //...Some stuff
}

当我尝试提交表单时,我收到了这封信:

  

解析错误:语法错误,第29行的未知修饰符'{'

(第19行是$p1 = "^[0-9]{4}$";。)我是忽视某些事情还是我只是愚蠢?

1 个答案:

答案 0 :(得分:7)

你忘了你的regex delimiters(正如minitech建议的那样,你应该使用单引号来预测未来的逃避问题)。

因此,

$p1="[0-9]{4}$";
$p2="[0-9]{1,6}";

应该是

$p1='/[0-9]{4}$/';
$p2='/[0-9]{1,6}/';

这是传统的分隔符。请注意,您可以从许多不同的分隔符字符中进行选择(请参阅上面的链接),例如

$p1='@[0-9]{4}$@';
$p2='@[0-9]{1,6}@';

当您的模式包含/时,这可能很方便,因此您无需逃避它们。