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 の定義

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
matchAllChrome 完全対応 73Edge 完全対応 79Firefox 完全対応 67IE 未対応 なしOpera 完全対応 60Safari 完全対応 13WebView Android 完全対応 73Chrome Android 完全対応 73Firefox Android 完全対応 67Opera Android 完全対応 52Safari iOS 完全対応 13Samsung Internet Android 未対応 なしnodejs 完全対応 12.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報