如何确定字符串是否为日期格式?

时间:2012-02-08 13:49:28

标签: javascript regex string datetime date

我有一些像这样的字符串:2012-02-05T07:42:47.000Z与其他字符串混合。这种格式始终。 (但数字不一样,当然......时间不同) (不是Sun, 05 Feb 2012 07:42:47 GMT

我想知道字符串是否与该格式匹配。我该如何确定?冒号,点和东西都很复杂。

6 个答案:

答案 0 :(得分:2)

正则表达式[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}Z

答案 1 :(得分:0)

!isNaN(+new Date(s))的那些?

答案 2 :(得分:0)

尝试与以下正则表达式匹配:

var pattern = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/;
var d = "2012-02-05T07:42:47.000Z";
if(d.match(pattern) !== null){
    //success
} else {
    //failed
}

答案 3 :(得分:0)

您可以使用Date.parse(your_string)并检查结果。与正则表达式不同,这将检查任何允许的日期格式。 http://www.w3schools.com/jsref/jsref_parse.asp

刚刚意识到你的字符串总是处于一种给定的格式,仍然不像正则表达式,该功能将检查日/月/年是否正确等。所以可能进行2次检查:第一次检查字符串格式,第二次检查数字是否正确。

答案 4 :(得分:0)

用#符号替换所有数字,以便" 2012-02-05T07:42:47.000Z"看起来像" #### - ## - ## T ##:##:##。### Z"然后你可以进行直接的字符串搜索。

我使用这种技术在一大块文档文本中查找社会安全号码,我将所有数字转换为#符号,我只需要查找### - ## - ####

答案 5 :(得分:0)

对于它的价值,您可以使用moment.js来执行此操作。

var check1 = "2012-02-05T07:42:47.000Z";
alert(moment(check1));
//Sat Feb 04 2012 23:42:47 GMT-0800

var check2 = "201-02-05T07:42:47.000Z";
alert(moment(check2));
//Invalid date

在此处使用它:http://jsfiddle.net/remus/KFjZF/