php - 正则表达式从任何字符串中获取日期 yyyy-mm-dd

标签 php regex date datetime

首先请原谅我对正则表达式不太熟悉。我想要的是一个正则表达式,它可以从任何类型的字符串中提取像 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
)
*/

Live demo

关于php - 正则表达式从任何字符串中获取日期 yyyy-mm-dd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564063/

相关文章:

php - Curl 给出与普通浏览器不同的响应

php - 何时使用存储过程和触发器与应用层

javascript 未终止的字符类

用于检查低于某个值的数字的正则表达式

java - 使用 GregorianCalendar 自定义日期格式

php - 将使用 fopen 的代码转换为 curl,因为主机正在阻止 fopen

php - undefined variable : categories in Blade Laravel 6. 4.0

php - 在 SELECT 语句中按字符长度匹配

ruby - chronic 是否有任何它解析的日期格式选项? ( ruby )

loops - Lua 日期操作循环