首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Preg_match Date /包含或不包含前导0

Preg_match Date /包含或不包含前导0
EN

Stack Overflow用户
提问于 2012-11-16 08:27:00
回答 4查看 572关注 0票数 0
代码语言:javascript
复制
$new_date = preg_replace("!([01][0-9])/([0-9]{2})/([0-9]{4})!", "$3-$1-$2", $data[$c]);

日期如下所示

代码语言:javascript
复制
04/02/2012, 12/31/2012

但是当我得到像这样的输入时,它会失败

代码语言:javascript
复制
12/1/2011, 1/4/2011

如何修复它,因为我完全是菜鸟的正则表达式...:(

非常感谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-16 08:29:54

尝试:

代码语言:javascript
复制
!(\d{1,2})/(\d{1,2})/(\d{4})!

\d的意思是一个数字,我认为它比[0-9]更方便,而且它们几乎是等效的。

票数 1
EN

Stack Overflow用户

发布于 2012-11-16 08:28:02

尝试:

代码语言:javascript
复制
!([01]?[0-9])/([0-9]{1,2})/([0-9]{4})!

第二组上的{1,2}表示0-9之间的1位或2位数字。我还让第一部分接受1或2个数字,这样你就可以匹配3/12/2012和03/12/2012。

票数 1
EN

Stack Overflow用户

发布于 2012-11-16 08:28:25

只处理日期比使用正则表达式更容易。DateTime对象让这一切变得很简单:

代码语言:javascript
复制
$date = new DateTime('1/1/2013');
$new_date = $date->format('Y-m-d'); // Outputs 2013-01-01
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13408626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档