Symbol.matchAll

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

説明

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

'abc'.matchAll(/a/);

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

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

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

Symbol.matchAll を使用する

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]() を参照してください。

仕様

仕様書
ECMAScript (ECMA-262)
Symbol.matchAll の定義

ブラウザー実装状況

BCD tables only load in the browser

関連情報