This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
The Symbol.matchAll static data property represents the well-known symbol Symbol.matchAll. The String.prototype.matchAll() method looks up this symbol on its first argument for the method that returns an iterator, that yields matches of the current object against a string.
For more information, see RegExp.prototype[Symbol.matchAll]() and String.prototype.matchAll().
const re = /\d+/g; const str = "2016-01-02|2019-03-07"; const result = re[Symbol.matchAll](str); console.log(Array.from(result, (x) => x[0])); // Expected output: Array ["2016", "01", "02", "2019", "03", "07"]
The well-known symbol Symbol.matchAll.
Property attributes of Symbol.matchAll
| |
|---|---|
| Writable | no |
| Enumerable | no |
| Configurable | no |
const str = "2016-01-02|2019-03-07";
const numbers = {
*[Symbol.matchAll](str) {
for (const n of str.matchAll(/\d+/g)) yield n[0];
},
};
console.log(Array.from(str.matchAll(numbers)));
// ["2016", "01", "02", "2019", "03", "07"]
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
matchAll |
73 | 79 | 67 | 60 | 13 | 73 | 67 | 52 | 13 | 11.0 | 73 | 13 | 1.0.0 | 1.0 | 12.0.0 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/matchAll