我知道這個問題已被多次詢問,但這些例子並不適合我。正則表達式匹配某個字符後的所有文本是什麼?
我想在單個正則表達式中獲得時間的微小部分。我擁有的是:
minute = new RegExp(":[0-9]{1,2}").exec(time).toString().replace(":", "");
如何在不使用.replace的情況下完成此操作?
我知道這個問題已被多次詢問,但這些例子並不適合我。正則表達式匹配某個字符後的所有文本是什麼?
我想在單個正則表達式中獲得時間的微小部分。我擁有的是:
minute = new RegExp(":[0-9]{1,2}").exec(time).toString().replace(":", "");
如何在不使用.replace的情況下完成此操作?
使用捕獲組來獲取你想要的。
var time = '12:29',
minute = /:([0-9]{1,2})/.exec(time)[1];
// minute is "29"
這工作。 thx人 –
假設時間是格式NN:NN
那麼分鐘可以提取像這樣的:
minute = time.match(/\d{2}$/)[0];
或一個簡單的分裂:
minute = time.split(':')[1];
你需要某種位置錨來抓住字符串的最後一部分
(/:([0-9]{1,2}$)/)
試試這個:
minute = new RegExp(":([0-9]{1,2})").exec(time)[1];
這將匹配整個事情,但無論儲存在括號中的部分匹配供以後使用。因此[1]
。
要離開這裏下面,萬一有人來尋找一個非JavaScript的答案。
這不會在javascript中工作,因爲它不支持lookbehinds。謝謝@ 999。
嘗試使用積極lookbehind。這樣你甚至不需要更換:)
minute = new RegExp("(?<=:)[0:9]{1,2}").exec(time).toString();
[0:9]{1,2}
是你實際想要匹配的模式。 (?<=:)
只是確保它背後有一個冒號,而沒有真正消費任何東西。
將「時間」存儲爲Date對象,如果您尚未這樣做。然後,您可以使用getMinutes()將分鐘組件拉出。
minute = time.getMinutes();
假設time
就像是 「10:15 AM」 時間字符串,你可以(也應該)使用Date對象。這是工作的正確工具,它更加靈活,因爲它可以處理日期/時間數據。
var time = '10:15 AM';
// handle either a full date string OR a time string
var d = new Date(time);
if (isNaN(d.getTime()))
var d = new Date('1/1/2012 '+time);
可能比試圖確定是否秒是有或沒有,這可能打破正則表達式,或使其複雜得多,它需要更好。我認爲你最好使用日期/時間相關的工具來解析日期/時間相關的數據。
文檔
什麼是'time'變量是指什麼? – James
@ 999,我想時間包含了一些類似於'18:28'的東西。 – micnic
爲什麼不用':'來分割...? –