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.


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



This method exists for customizing match behavior within RegExp subclasses.

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


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];

//  Array ["2016", "01", "02", "2019", "03", "07"]

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


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

Browser compatibility

Update compatibility data on GitHub
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 Full support 13WebView Android Full support 73Chrome Android Full support 73Firefox Android Full support 67Opera Android Full support 52Safari iOS Full support 13Samsung Internet Android No support Nonodejs Full support 12.0.0


Full support  
Full support
No support  
No support

See also