2

我只想从 PHP 中的字符串中获取日期。此日期格式的 preg 表达式是什么:

24/11/2013

我在日期之前和之后有额外的字符串,如下所示: Hello d2 your date is 24/11/2013 thank you. 我试过这个:

preg_match('(\d{2})(/)(\d{2})(/)(\d{4})$',  $my_date_s, $matches);

但这显示错误

4

2 回答 2

1

由于没有在表达式中提供开始和结束分隔符,它不会匹配任何内容。定界符可以是任何非字母数字、非反斜杠、非空白字符。

PHP: Delimiters

preg_match('~\b\d{2}/\d{2}/\d{4}\b~',  $my_date_s, $match);
echo $match[0];

正则表达式:

\b          the boundary between a word char (\w) 
            and something that is not a word char
\d{2}       digits (0-9) (2 times)
 /          '/'
\d{2}       digits (0-9) (2 times)
 /          '/'
\d{4}       digits (0-9) (4 times)
\b          the boundary between a word char (\w) 
            and something that is not a word char
于 2013-11-09T18:51:34.697 回答
1

preg_match('~^\d{2}/\d{2}/\d{4}$~', $my_date_s, $matches);

主要是你没有包括分隔符。我添加了一个字符串锚的开头,因为你有一个字符串的结尾。但是如果没有看到你的内容,很难知道正则表达式是否适合你。这个模式假设字符串中唯一的东西是你的日期。

因此,如果它是包含其他内容的字符串中的日期,请执行以下操作:

preg_match('~\b\d{2}/\d{2}/\d{4}\b~', $my_date_s, $matches);

另外仅供参考,这只是一个简单的验证..它验证格式但不是真实日期。如果你想验证它是一个真实的日期,你可以在爆炸/然后使用checkdate

于 2013-11-09T17:45:37.610 回答