Las expresiones regulares "Regular Expressions" (también llamadas RegEx o RegExp) son una forma poderosa de analizar texto. Con RegEx, puede hacer coincidir cadenas en puntos que coinciden con caracteres específicos (por ejemplo, JavaScript) o patrones (por ejemplo, NumberStringSymbol - 3a &).

El método .replace se usa en cadenas en JavaScript para reemplazar partes de las cadenas con caracteres. A menudo se usa así:

const str = 'JavaScript';
const nuevaStr = str.replace("ava", "-");
console.log(nuevaStr);
// J-Script

Como puede ver arriba, el método .replace acepta dos argumentos: la cadena que se reemplazará y con qué se reemplazará la cadena.

Aquí es donde entra en juego Regex.

El uso de .replace anterior es limitado: los caracteres a reemplazar son conocidos - "ava". ¿Qué pasa si nos preocupamos por un patrón? ¿Quizás un número, dos letras y la palabra "foo" o tres símbolos usados juntos?

El método .replace utilizado con RegEx puede lograr esto. La expresión regular se puede utilizar de forma eficaz para recrear patrones. Entonces, combinar esto con .replace significa que podemos reemplazar patrones y no solo caracteres exactos.

Cómo usar RegEx con .replace en JavaScript

Para usar RegEx, el primer argumento de replace se reemplazará con la sintaxis de expresiones regulares, por ejemplo / regex /. Esta sintaxis sirve como patrón donde cualquier parte de la cadena que coincida con ella será reemplazada por la nueva sub cadena.

He aquí un ejemplo:

// coincide con un número, algunos caracteres y otro número 
const reg = /\d.*\d/
const str = "Java3foobar4Script"
const nuevaStr = str.replace(reg, "-");
console.log(nuevaStr);
// "Java-Script"

La cadena 3foobar4 coincide con la expresión regular /\d.*\d/, por lo que se reemplaza.

¿Y si quisiéramos realizar reemplazos en varios lugares?

Regex ofrece eso con la bandera g (global), y lo mismo se puede usar con replace. Así es cómo:

const reg = /\d{3}/g
const str = "Java323Scr995ip4894545t";
const nuevaStr = str.replace(reg, "");
console.log(nuevaStr);
// JavaScrip5t
// 5 no pasó la prueba :(

La expresión regular coincide con partes de la cadena que son exactamente 3 números consecutivos. 323 coincide, 995 coincide, 489 coincide y 454 coincide. Pero los últimos 5 no coinciden con el patrón.

El resultado es que JavaScrip5t muestra cómo los patrones coinciden correctamente y se reemplaza con la nueva subcadena (una cadena vacía).

También se puede utilizar la bandera - i. Esto significa que puede reemplazar los patrones que no distinguen entre mayúsculas y minúsculas. Así es como se usa:

const reg1 = /\dA/
const reg2 = /\dA/i
const str = "Jav5ascript"
const nuevaStr1 = str.replace(reg1, "--");
const nuevaStr2 = str.replace(reg2, "--");
console.log(nuevaStr1) // Jav5ascript
console.log(nuevaStr2) // Jav--script

..5a .. no coincide con la primera sintaxis porque la expresión regular distingue entre mayúsculas y minúsculas de forma predeterminada. Pero con el uso de la bandera i, como se ve en la segunda sintaxis, la cadena es como se esperaba: reemplazada.

Cómo utilizar Split con Expresiones Regulares

split también usa RegEx. Lo que significa que puede dividir una cadena no solo en las subcadenas que coinciden con los caracteres exactos, sino también con los patrones.

He aquí un vistazo rápido:

const regex = /\d{2}a/;
const str = 'Hola54 Como 64aestas';
console.log(str.split(regex));
// ["Hola54 Como ", "estas"]

La cadena se dividió (split) en 64a porque esa subcadena coincide con la expresión regular especificada.

Tenga en cuenta que el indicador global - g - en la división split es irrelevante, a diferencia del indicador i y otros indicadores. Esto se debe a que split divide la cadena en varios puntos con los que coincide la expresión regular.

Terminando

RegEx hace reemplazar cadenas con replace en JavaScript sea más efectivo, poderoso y divertido.

No solo está restringido a caracteres exactos, sino también a patrones y reemplazos múltiples a la vez. En este artículo, hemos visto cómo funcionan juntos usando algunos ejemplos.

¿Salud por RegEx ?

Traducido del artículo de Dillion Megida - JavaScript String.Replace() Example with RegEx