當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JavaScript String matchAll()用法及代碼示例


JavaScript String matchAll() 方法返回將字符串與正則表達式匹配的結果的迭代器。

用法:

str.matchAll(regexp)

在這裏,str 是一個字符串。

參數:

matchAll() 方法包含:

  • regexp - 正則表達式對象(如果參數是非 RegExp 對象,則參數隱式轉換為 RegExp)

注意:如果RegExp對象沒有/g旗幟,一個TypeError將被拋出。

返回:

  • 返回包含匹配項的迭代器,包括捕獲組。

注意:返回的迭代器的每個項目將具有以下附加屬性:

  • groups - 命名捕獲組的對象,其鍵作為名稱,值作為捕獲的匹配項。
  • index - 找到結果的搜索索引。
  • input - 搜索字符串的副本。

示例 1:使用 matchAll()

const string = "I am learning JavaScript not Java.";
const re = /Java[a-z]*/gi;

let result = string.matchAll(re);

for (match of result) {
  console.log(match);
}

輸出

[
  'JavaScript',
  index: 14,
  input: 'I am learning JavaScript not Java.',
  groups: undefined
]
[
  'Java',
  index: 29,
  input: 'I am learning JavaScript not Java.',
  groups: undefined
]

在這裏,返回的迭代器使用for...of 循環進行迭代。

示例 2:使用 matchAll 捕獲組

const string = "My name is Albert. YOUR NAME is Soyuj.";

// expression matches case-insensitive "name is"+ any alphabets till period (.)
// using named capturing groups
const re = /name\sis\s(?<name>[a-zA-Z]+)\./gi;
let found = string.matchAll(re);

for (const match of found){
    console.log(`Found "${match[0]}" at index ${match.index}. Captured name = ${match.groups['name']}`)
}

輸出

Found "name is Albert." at index 3. Captured name = Albert
Found "NAME is Soyuj." at index 24. Captured name = Soyuj

在這裏,我們使用了正則表達式來匹配字符串的某個部分。我們可以使用 matchAll()match() 更好地捕獲比賽中的某些組。

相關用法


注:本文由純淨天空篩選整理自 Javascript String matchAll()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。