2012-02-08 81 views
0

我有一些像這樣的字符串:2012-02-05T07:42:47.000Z與其他字符串混合在一起。這是總是這種格式。 (但數字是不一樣的,當然...時間是不同的) (而不是Sun, 05 Feb 2012 07:42:47 GMT如何確定字符串是否爲日期格式?

我想知道一個字符串是否匹配該格式。我如何確定?它與冒號,點和東西非常複雜。

+0

是不是有辦法把它直接解析成Java沒有一個正則表達式? 用正則表達式你知道如果它是一個日期,但如果你還需要我應該檢查一些日期解析器函數的值。 – 2012-02-08 13:53:31

回答

2

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

+0

你可以在這裏測試它:http://www.regexplanet.com/simple/index.html – 2012-02-08 14:00:58

0

藥粥這!isNaN(+new Date(s))

+0

這是什麼?這會工作嗎? – TIMEX 2012-02-08 14:04:01

+0

只是「內置日期作爲日期字符串接受此字符串」的濃縮黑魔法。 – 2012-02-08 22:26:26

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 
} 
0

您可以使用Date.parse(your_string)和檢查結果。這將檢查任何允許的日期格式,不像正則表達式。 http://www.w3schools.com/jsref/jsref_parse.asp

剛剛意識到您的字符串總是在給定的格式,還不像正則表達式函數將檢查日/月/年是正確的等等。所以,也許攜帶2個檢查:1,檢查字符串格式,第2個檢查號碼是對的。

0

用#符號替換所有數字,以便「2012-02-05T07:42:47.000Z」看起來像「#### - ## - ## T ##:##:##。## #Z「,那麼你可以直接進行字符串搜索。

我用這種技術在大塊文檔文本中查找社會安全號碼,我將所有數字轉換爲#號我只需要查找字符串### - ## - ####

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/

相關問題