所以我一直在尝试使用d3.js工作的jsfiddle示例,它表示接受字符串输入,例如;
"8/8/2011 12:00:00 AM"
使用该字符串可以通过使用正则表达式解析日期信息来创建日期对象。
我一直在使用来自this一个的相同正则表达式。我想要捕获的格式是一个简单的MM / DD / YYYY,我将通过稍后将其传递给Date对象来进行实际验证。
我想出的用于进行小验证的实际正则表达式模式是:
(([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是有效的,所以我迷路了。
我已经对我试图做的事情的逻辑进行了评论,但我已经尝试了所有我能想到的东西,并且不介意别人小看,指出我可能错过的东西。
答案 0 :(得分:2)
我知道这根本不使用正则表达式,但您是否尝试在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()