javascript和regex的日期解析问题

Date parsing troubles with javascript and regex

本文关键字:问题 日期 regex javascript      更新时间:2023-09-26

因此,我一直在尝试获得一个使用d3.js的jsfiddle示例,它表示接受字符串输入,例如;

"8/8/2011 12:00:00 AM"

使用该字符串可以通过regex解析日期信息来创建日期对象。

我一直在使用与此版本几乎相同的正则表达式。我试图捕获的格式是一个简单的MM/DD/YYYY,稍后我将通过将其传递到Date对象来进行实际验证

我为进行小型验证而想出的实际regex模式是:

(([01]?[0-2]|[0-9])('/)([0-2]?[0-9]|3[01])('/)((19|20)'d{2}))

然而,我的模式给我带来了一些问题——它似乎与标志和匹配/验证有关。Rubular在没有任何标志的情况下验证良好,并匹配所有日期,但如果我将全局标志(g)放在模式上,则会中断。然而,对于regex101,我需要放置全局标志(g),以便它能够匹配我为测试字符串设置的所有日期。我很困惑国旗是否真的重要,希望能澄清一下。

在我的jsfiddle示例旁边,它停止给我任何警告或反馈。然而,我也很难让RegEx.exec(str)像我想要的那样正常工作。我想我让它推送数组中的第一个条目,这将是我想要的日期字符串。然而,正如我所说,我没有得到任何反馈或弹出的警报,我已经设置。根据jsfiddle的说法,我的javascript是有效的,所以我不知所措。

我用我想做的事情的逻辑来评论这一切,但我已经尝试了我能想到的一切,不介意别人看一眼,指出我可能错过的东西。

我知道这根本没有使用regex,但您尝试过在javascript中使用Date.parse()函数吗?在你的情况下,你可以这样做:

var dateString = "8/10/2011 12:00:00 AM"; // used different month to date for highlighting purposes
var date = new Date();
date.setTime(Date.parse(dateString));
date.getFullYear(); // returns 2011;
date.getMonth() // returns 7 (months are 0-11)
date.getDate(); // returns 10

更多信息请点击此处:MDN Date.parse()