我有這樣的regex.exec()函數:正則表達式匹配似乎不工作的JavaScript
var chat = reader.result;
var regex = /(\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}) (\d\d:\d\d:\d\d): ([^:]+): (.*)/g;
var messages = [];
var match;
while(match = regex.exec(chat)) {
messages.push({
date: match[1],
time: match[2],
name: match[3],
message: match[4]
});
}
匹配[1]似乎是工作在幾乎所有日期:DD/MM/YYYY到DD-MM-YY
然而,當輸入是以下格式:
22-2-2014 18:37:15: Andre: Moet nog 2,5 aflevering
它輸出一個空數組messages
我真的不知道這是來自哪裏,但我相信這是正則表達式match[1]
,因爲當輸入是28/02/14 00:03:03: Tom: Je gaat nu de afweging maken
它返回一個對象數組就好了。
P.s.對於感興趣的人,reader.result來自HTML5 filereader API。
編輯我已經更新了問題,並提供了由評論者發現的正則表達式中的錯誤。儘管如此,即使使用新的正則表達式,輸入仍然失敗
您的日期的月份部分僅限於e數字。它如果在那裏失敗。 –
此外,[這是一個很棒的網站,我喜歡](http://regexpal.com/),我建議你檢查一下這樣的事情。 – Daedalus
謝謝,我嘗試了一個新的匹配[1]:(\ d \ d [\/- ] \ d {1,2} [\/- ] \ d {2,4}),但它仍然失敗在有問題的輸入上。 – user3263723