首先请原谅我对正则表达式不太熟悉。我想要的是一个正则表达式,它可以从任何类型的字符串中提取像 mysql 日期这样的日期。
直到现在我一直在使用这个:^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][ 0-9]|3[0-1])$
但是现在我想从其他字符串和日期时间字符串中提取日期模式我尝试将正则表达式更改为 ^[0-9]{4}-(0[1-9]|1[0-2] )-(0[1-9]|[1-2][0-9]|3[0-1]).
基于一些在线正则表达式测试器,但它失败了。有时它还会给我一个 3 位数的结果。
换句话说,sting 以 yyyy-mm-dd
开头,然后是空格字符数字或任何内容。如何提取日期?
更新
我在这里用 preg_match 测试正则表达式:http://www.pagecolumn.com/tool/pregtest.htm
目前看来唯一可行的是
[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])
最佳答案
如果您的字符串有不止一个日期形式的值出现,并且您想捕获所有这些值,您应该使用 preg_match_all
函数,如果不是 preg_match
就足够了。同样使用 ^
和 $
意味着输入字符串应该只是一个日期,所以要避免它。
<?php
$input_string = "yes today is 2013-10-24";
if(preg_match("/\d{4}-\d{2}-\d{2}/", $input_string, $match))
{
print_r($match);
}
else
echo "not matched";
////////////////////////
/* Output:
Array
(
[0] => 2013-10-24
)
*/
关于php - 正则表达式从任何字符串中获取日期 yyyy-mm-dd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564063/