Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
String.prototype.replaceAll()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since agosto de 2020.
El métodoreplaceAll() retorna una nueva cadena con todas las coincidencias de unpatrón reemplazadas por unreemplazo. Elpatrón puede ser una cadena o un objetoRegExp, y elreemplazo puede ser una cadena o una función que será llamada para cada coincidencia. La cadena original permanecerá inalterada.
In this article
Pruébalo
const paragraph = "I think Ruth's dog is cuter than your dog!";console.log(paragraph.replaceAll("dog", "monkey"));// Expected output: "I think Ruth's monkey is cuter than your monkey!"// Global flag required when calling replaceAll with regexconst regex = /Dog/gi;console.log(paragraph.replaceAll(regex, "ferret"));// Expected output: "I think Ruth's ferret is cuter than your ferret!"Sintasix
replaceAll(patrón, reemplazo)Parámetros
patrónPuede ser una cadena o un objeto con un método
Symbol.replace— el típico ejemplo es unaexpresión regular (regex). Cualquier valor que no tenga el métodoSymbol.replaceserá convertido a una cadena.Si
patrónes unaregex, entonces debe tener el parámetro global (g) establecido, o unTypeErrores lanzado.reemplazoPuede ser una cadena o una función. El reemplazo tiene la misma semántica que la de
String.prototype.replace().
Valor de retorno
Una nueva cadena, con todas las coincidencias de un patrón reemplazadas por un reemplazo.
Excepciones
TypeErrorLanzado si el
patrónes unaregex que no tiene el parámetro global (g) configurado (su propiedadflagsno contiene"g")
Descripción
Este método no modifica el valor de la cadena en la que es ejecutado. Regresa una nueva cadena.
A diferencia dereplace(), este método reemplazará todas las coincidencias de una cadena, no solo la primera. Esto es especialmente útil si la cadena no es estáticamente conocida, como llamando al contructor del objetoRegExp() sin escapar caracteres especiales podría cambiar su semántica sin intención.
function unsafeRedactName(text, name) { return text.replace(new RegExp(name, "g"), "[REDACTED]");}function safeRedactName(text, name) { return text.replaceAll(name, "[REDACTED]");}const report = "A hacker called ha.*er used special characters in their name to breach the system.";console.log(unsafeRedactName(report, "ha.*er")); // "A [REDACTED]s in their name to breach the system."console.log(safeRedactName(report, "ha.*er")); // "A hacker called [REDACTED] used special characters in their name to breach the system."Si elpatrón es un objeto con un métodoSymbol.replace (incluyendo objetosRegExp), ese método es llamado con la cadena objetivo yreemplazo como argumento. Su valor de retorno se convierte en el valor de retorno dereplaceAll(). En este caso el comportamiento dereplaceAll() es enteramente codificado por el método@@replace, y por lo tanto tendrá el mismo resultado quereplace() (aparte de la validación extra de queregex es global).
Si elpatrón es una cadena vacía, el reemplazo será insertado entre cada unidad de código UTF-16, similar al comportamiento desplit().
"xxx".replaceAll("", "_"); // "_x_x_x_"Para más información acerca de cómo interactúan las propiedades de unaregex (especialmente el paramétrosticky), véaseRegExp.prototype[@@replace]().
Ejemplos
>Usando replaceAll()
"aabbcc".replaceAll("b", ".");// 'aa..cc'Excepciones de una regex no global
Cuando se usa una expresión regular como valor de búsqueda, ésta debe ser global. Esto no funcionará:
"aabbcc".replaceAll(/b/, ".");// TypeError: replaceAll must be called with a global RegExpEsto sí funcionará:
"aabbcc".replaceAll(/b/g, ".");// "aa..cc"Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-string.prototype.replaceall> |