Symbol.matchAll
Baseline
Ampliamente disponible
Esta característica está consolidada y funciona en muchos dispositivos y versiones de navegador. Está disponible en todos los navegadores desde enero de 2020.
El símbolo conocido como Symbol.matchAll devuelve un iterador, que devuelve las coincidencias de la expresión regular con una cadena. Esta función es llamada por el método String.prototype.matchAll().
Pruébalo
const re = /[0-9]+/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"]
Descripción
Este Symbol se utiliza para String.prototype.matchAll() y específicamente en RegExp.prototype[@@matchAll](). Los dos ejemplos siguientes devuelven el mismo resultado:
js
"abc".matchAll(/a/);
/a/[Symbol.matchAll]("abc");
Este método existe para personalizar el comportamiento de las coincidencias dentro de las subclases RegExp.
Atributos de la propiedad Symbol.matchAll | |
|---|---|
| Sobrescribir | No |
| Numerable | No |
| Configurable | No |
Ejemplos
>Usando Symbol.matchAll
js
const 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"]
Ver String.prototype.matchAll() y RegExp.prototype[@@matchAll]() para más ejemplos.
Especificaciones
| Especificación |
|---|
| ECMAScript® 2027 Language Specification> # sec-symbol.matchall> |