El método JavaScript String matchAll () devuelve un iterador de resultados de hacer coincidir una cadena con una expresión regular.
La sintaxis del matchAll()
método es:
str.matchAll(regexp)
Aquí str
hay una cuerda.
Parámetros matchAll ()
El matchAll()
método incluye:
- regexp: un objeto de expresión regular (el argumento se convierte implícitamente en
RegExp
si no es unRegExp
objeto)
Nota: Si el RegExp
objeto no tiene la /g
bandera, se TypeError
lanzará un .
Valor de retorno de matchAll ()
- Devuelve un iterador que contiene las coincidencias, incluidos los grupos de captura.
Nota : Cada elemento del iterador devuelto tendrá las siguientes propiedades adicionales:
groups
- Un objeto de grupos de captura con nombre que tienen claves como nombres y valores como coincidencias capturadas.index
- El índice de búsqueda donde se encontró el resultado.input
- Una copia de la cadena de búsqueda.
Ejemplo 1: uso de matchAll ()
const string = "I am learning JavaScript not Java."; const re = /Java(a-z)*/gi; let result = string.matchAll(re); for (match of result) ( console.log(match); )
Salida
('JavaScript', índice: 14, entrada: 'Estoy aprendiendo JavaScript, no Java.', Grupos: indefinido) ('Java', índice: 29, entrada: 'Estoy aprendiendo JavaScript no Java.', Grupos: indefinido)
Aquí, el iterador devuelto se repite utilizando el for… of
bucle.
Ejemplo 2: uso de matchAll para capturar grupos
const string = "My name is Albert. YOUR NAME is Soyuj."; // expression matches case-insensitive "name is"+ any alphabets till period (.) // using named capturing groups const re = /namesiss(?(a-zA-Z)+)./gi; let found = string.matchAll(re); for (const match of found)( console.log(`Found "$(match(0))" at index $(match.index). Captured name = $(match.groups('name'))`) )
Salida
Encontrado "nombre es Albert". en el índice 3. Captured name = Albert Found "NAME is Soyuj". en el índice 24. Nombre capturado = Soyuj
Aquí, hemos usado una expresión regular para hacer coincidir una cierta porción de la cadena. Podemos capturar ciertos grupos en el partido usando matchAll()
mejor que match()
.
Lectura recomendada: coincidencia de cadenas de JavaScript ()