Symbol.matchAll

Symbol.matchAll は、文字列に対する正規表現の一致を生成するイテレーターを返します。この関数は String.prototype.matchAll() メソッドによって呼び出されます。

試してみましょう

説明

このシンボルは String.prototype.matchAll()、特に RegExp.prototype[@@matchAll]() で使用されます。以下の 2 つの例は同じ結果を返します。

js
"abc".matchAll(/a/);

/a/[Symbol.matchAll]("abc");

このメソッドは、RegExp サブクラス内の一致動作をカスタマイズするために存在します。

Symbol.matchAll のプロパティ属性
書込可能 不可
列挙可能 不可
設定可能 不可

Symbol.matchAll を使用する

js
let re = /[0-9]+/g;
let str = "2016-01-02|2019-03-07";

const numbers = {
  *[Symbol.matchAll](str) {
    for (const n of str.matchAll(/[0-9]+/g)) yield n[0];
  },
};

console.log(Array.from(str.matchAll(numbers)));
//  Array ["2016", "01", "02", "2019", "03", "07"]

その他の例については、String.prototype.matchAll()RegExp.prototype[@@matchAll]() を参照してください。

仕様

Specification
ECMAScript Language Specification
# sec-symbol.matchall

ブラウザー実装状況

BCD tables only load in the browser

関連情報