如何在 JavaScript 中使用捕獲組擷取正則表達式的所有結果
我面臨了這樣的任務
基本上,我有一個包含多個URL的字符串,我想使用正則表達式處理它們。
這個正則表達式使用了捕獲組,非常方便。
那麼,讓我們從獲取單個結果開始:
1 | const text = 'hello1 bla bla hello2' |
使用 g
標誌可以從正則表達式中獲取多個結果,而且這是自動進行的,但現在 match()
的結果不同,只返回匹配的結果:
1 | const text = 'hello1 bla bla hello2' |
使用 ES2020中的 matchAll()
方法可以獲得更詳細的結果集。
該方法返回一個迭代器對象,所以需要使用循環來遍歷結果:
1 | for (let match of text.matchAll(regex)) { |
現在讓我們談談捕獲組。
假設您的文本包含如下格式的日期:
1 | const text = '2015-01-02 2022-02-04 2040-12-02' |
並且您有一個正則表達式來匹配這個日期格式,因為您可能想要獲取年份的參考:
1 | const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g |
這裡使用了 命名捕獲組。
現在使用 text.match(regex)
將不會提供有關組的任何信息:
1 | const text = '2015-01-02 2022-02-04 2040-12-02' |
但是您可以使用 text.matchAll(regex)
獲取這些信息:
1 | const text = '2015-01-02 2022-02-04 2040-12-02' |
因此,您可以像這樣提取年份信息:
1 | const text = '2015-01-02 2022-02-04 2040-12-02' |
tags: [“JavaScript”, “regex”, “capturing groups”, “matchAll”, “match”]