簡體   English   中英

Javascript:查找時間戳子串的所有索引

[英]Javascript: Find all indices of timestamp substrings

“X”是一個數字,我想找到所有出現的子字符串,格式為

  • "XX:XX:XX" || "XX:XX" || "X:XX"
  • (小時):(分鍾):(秒)

在一個段落內進行進一步操作。 除了循環,還有更優雅的方式嗎?

筆記:

  • 時間戳在子字符串之前/之后可能有也可能沒有空格(例如,在亞洲文本中)。
  • 時間戳子串可能在一個句子中出現多次。

您可以匹配兩組全部或部分。

 const time = /\d\d:\d\d:\d\d|\d?\d:\d\d/g, string = 'abc1:23def12:34ghi12:34:56jkl98:7abc1:23def12:34ghi12:34:56jkl', result = string.match(time); console.log(result);

這就是正則表達式的用途:

/(\d{1,2}):(\d{2})(?::(\d{2}))?/g

檢查Regex101.com

然后,您可以將它與任何正則表達式方法一起使用,例如.matchAll

 console.log(Array.from('asd50:foo 12:27 bar13:49:21baz 5:41'.matchAll(/(\d{1,2}):(\d{2})(?::(\d{2}))?/g)))

對於更精確的時間戳匹配(例如沒有35:70:99 ),您可以使用一些正則表達式魔法(請注意,它使用后向,這是 ES2018 中的新功能):

/(?<!\d|:)([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?(?!\d|:)/g

檢查Regex101.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM