php preg_match没有给出结果?

时间:2013-11-27 22:40:51

标签: php regex

抱歉,我不擅长php,这可能是一个非常明显的错误。我正在尝试这个:

  $datum = "Samstag, 26.10.2013";
  echo("<p>".$datum."</p>");

  $regresult = preg_match("(.*)([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,4})",$datum, $matches);
  echo("<p>Result: ".$regresult."</p>");
  echo("<p>Error: ".preg_last_error()."</p>");
  echo("<p>Match: ".$matches[2]."</p>");

结果是:

<p>Samstag, 26.10.2013</p><p>Result: </p><p>Error: 0</p><p>Match: </p>

但是在preg_match的文档中它说:

  如果模式与给定主题匹配,则

preg_match()返回1,如果匹配,则返回0   没有,或者如果发生错误则为FALSE。

谁知道我做错了什么?

2 个答案:

答案 0 :(得分:4)

您错过了delimeters

preg_match要求你做这样的事情

preg_match('/{pattern}/', $subject);

在这种情况下,我使用/作为我的分隔符。

一个例子:正好匹配3位

preg_match('/\d{3}/', $subject);

If you check out php's documentation on preg_match you can see other examples

编辑:

Php原生日期时间函数参考链接:

<强> strtotime

<强> date/time formats

<强> date

<强> time

答案 1 :(得分:2)

您必须在正则表达式模式中使用分隔符/

preg_match("/(.*)([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,4})/", $datum, $matches);
            ↑                                        ↑
        delimeter                                delimeter

参见 this demo - 它有效......