我只想从 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);
但这显示错误
由于没有在表达式中提供开始和结束分隔符,它不会匹配任何内容。定界符可以是任何非字母数字、非反斜杠、非空白字符。
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
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