2010-01-11 22 views
0

有人可以爲我提供以下正則表達式嗎? (使用JavaScript)解析日期/時間字符串所需的正則表達式

源字符串:Jan 2 2010 6:00PM

我想要得到的字符串,只顯示時間,如下圖所示。 (上面的例子中使用)

結果字符串:6:00 PM

+0

平臺的選擇?此外,SilentGhost有一個非常好的點 – 2010-01-11 16:33:46

+11

爲什麼你需要正則表達式?你不能在最後的空間分割字符串嗎? – SilentGhost 2010-01-11 16:34:01

+0

我同意拆分會很好。爲什麼我沒有想到這個? (duh) 但是,在那種情況下,我將如何拆分PM? – Kenny 2010-01-11 16:39:53

回答

6

替換(\d{1,2}:\d{1,2})([AP]M)\1 \2

更新:使用\d{2}代替\d{1,2}如果源串是保證在HH:MM格式。

+3

+1,但是':\ d {1,2}'應該是':\ d {2}',因爲秒總是使用2位數字 – 2010-01-11 16:38:59

+0

雅,我在OP的例子中只是寬鬆的小時部分是單個數字。 – Amarghosh 2010-01-11 16:42:44

+0

魯本斯:我看到沒有秒,但只有幾分鐘! :P – 2010-01-11 16:47:09

0

您可以使用格式爲MMM dd yyyy HH:mmSimpleDateFormat。然後你可以獲得時間部分。

0

雖然我沒有看過,但我相信你能在Regex Library網站上找到適合你的東西。不過,我碰巧同意SilentGhost,因爲分割字符串可能更容易。只要確保所有日期時間都是相同的格式。

1

實施SilentGhost在正則表達式評論:/([^ ]+)([^ ]{2})$/

這將匹配最後一個空格分隔的「字」,在第1組和第2組的翻譯字符串操作的最後兩個字符的第一位,而不是應直截了當。

你也可以更換(..)[AP]M或類似的,如果需要的話,如果你構建的正則表達式,以防止類似blah blah haha-I-gave-garbage-inputPM可能從驗證的一點點好處,但也有很多方法無論如何處理的垃圾。

0

如果你需要將其轉換成一個Date對象,如果你在一個網絡瀏覽器使用JavaScript,您可能希望這個代替:

new Date('Jan 2 2010 6:00PM'.replace(/(?=[AP]M)/i, ' ')); 
// Sat Jan 02 2010 18:00:00 GMT-0600 (Central Standard Time) 

new Date('Jan 2 2010 6:00PM'.replace(/(?=[AP]M)/i, ' ')).toUTCString(); 
// Sun, 03 Jan 2010 00:00:00 GMT 

Mozilla將在Javascript Date object參考文檔。

相關問題