Symbol.matchAll

The Symbol.matchAll well-known symbol returns an iterator, that yields matches of the regular expression against a string. This function is called by the String.prototype.matchAll() method.

Description

This Symbol is used for String.prototype.matchAll() and specifically in RegExp.prototype[@@matchAll](). The following two examples return same result:

'abc'.matchAll(/a/);

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

This method exists for customizing match behavior within RegExp subclasses.

Property attributes of Symbol.matchAll
Writable no
Enumerable no
Configurable no

Examples

Using 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"]

See String.prototype.matchAll() and RegExp.prototype[@@matchAll]() for more examples.

Specifications

Specification
ECMAScript (ECMA-262)
The definition of 'Symbol.matchAll' in that specification.

Browser compatibility

DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
matchAllChrome Full support 73Edge Full support 79Firefox Full support 67IE No support NoOpera Full support 60Safari No support NoWebView Android Full support 73Chrome Android Full support 73Firefox Android Full support 67Opera Android Full support 52Safari iOS No support NoSamsung Internet Android No support Nonodejs Full support 12.0.0

Legend

Full support
Full support
No support
No support

See also