我想在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);
但这显示错误
答案 0 :(得分: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);
另外,仅供参考,这只是一个简单的验证..它验证格式,但不是如果它是真实的日期。如果您想将其验证为真实日期,可以/
explode然后使用checkdate
答案 1 :(得分:1)
由于未在表达式中提供开始和结束分隔符,因此无法匹配任何内容。分隔符可以是任何非字母数字,非反斜杠,非空白字符。
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