Objeto `RegExp`

Este artículo explica el objeto RegExp.

Explicaremos el objeto RegExp con ejemplos prácticos.

YouTube Video

Objeto RegExp

¿Qué es RegExp?

RegExp (Expresión Regular) es un objeto utilizado para representar patrones de cadenas de texto. A diferencia de las comparaciones simples de caracteres, puedes definir de manera flexible 'cadenas que cumplen ciertas condiciones'.

Al utilizar un objeto RegExp, puedes realizar operaciones como buscar, validar, extraer y reemplazar cadenas de manera concisa y clara. Es muy eficaz para tareas cotidianas como la validación de datos de formularios, el análisis de registros y el formato de texto. A continuación se muestran algunos ejemplos sencillos de expresiones regulares.

1const pattern = /abc/;
  • Esta expresión regular verifica si la secuencia 'abc' está incluida.

Cómo crear expresiones regulares (dos métodos)

Existen dos tipos de sintaxis para RegExp: notación literal y notación de constructor.

1// Literal notation: pattern and flags are written together
2const literal         = /hello/;
3const literalWithFlag = /hello/i;
4const literalDigits   = /\d+/;
5
6// Constructor notation: pattern and flags are passed separately
7const constructor         = new RegExp("hello");
8const constructorWithFlag = new RegExp("hello", "i");
9const constructorDigits   = new RegExp("\\d+");
  • La notación literal es concisa y legible, lo que la hace adecuada para expresiones regulares que se utilizan como constantes.. Por otro lado, la notación de constructor se utiliza cuando deseas construir el patrón usando variables o determinar su contenido en tiempo de ejecución.
  • Con la notación literal, puedes describir intuitivamente tanto la expresión regular como sus indicadores juntos. En cambio, con la notación de constructor, necesitas especificar el patrón y los indicadores por separado.
  • Además, con la notación de constructor, pasas la expresión regular como una cadena, por lo que las barras invertidas deben escaparse dos veces.

test(): La validación más básica

El objeto RegExp proporciona métodos para realizar evaluaciones y operaciones utilizando expresiones regulares. test() es un método que devuelve un valor booleano indicando si hay coincidencia con el patrón.

1const regex = /JavaScript/;
2
3console.log(regex.test("I love JavaScript")); // true
4console.log(regex.test("I love TypeScript")); // false
  • Es el primer método que deberías aprender, y es ideal para ramas condicionales o validación de entrada.

match(): Obtener resultados coincidentes

match() devuelve un arreglo que contiene la cadena coincidente y información detallada.

1const text = "Version 1.2.3";
2const result = text.match(/\d+\.\d+\.\d+/);
3
4console.log(result[0]); // "1.2.3"
  • match() es más conveniente que test() para procesos de extracción y análisis.

replace(): Reemplazo usando expresiones regulares

replace() convierte la parte coincidente en otra cadena.

1const text = "Hello   World";
2const result = text.replace(/\s+/g, " ");
3
4console.log(result); // "Hello World"
  • Puedes usarlo para formatear registros o normalizar espacios en blanco innecesarios.

Banderas básicas (g, i, m)

Puedes especificar 'banderas' en las expresiones regulares. Las banderas son opciones que controlan cómo una expresión regular procesa cadenas según ciertas reglas. Incluso con el mismo patrón, los resultados pueden cambiar dependiendo de las banderas.

1const text = "apple Apple APPLE";
2const regex = /apple/gi;        // or new RegExp("apple", "gi");
3
4console.log(text.match(regex)); // ["apple", "Apple", "APPLE"]
  • La bandera g (global) busca en toda la cadena.
  • La bandera i (ignorar mayúsculas/minúsculas) ignora las diferencias de mayúsculas y minúsculas al comparar.
1const multilineText = `apple
2banana
3apple`;
4
5const regexM = /^apple/gm;
6
7console.log(multilineText.match(regexM)); // ["apple", "apple"]
  • La bandera m (multilínea) se utiliza para tratar las cadenas multilínea por línea. Con esto, ^ y $ funcionan en base al principio o final de cada línea, en vez de la cadena completa.

Clases de caracteres: combina múltiples candidatos

Al usar corchetes [], puedes definir un conjunto de caracteres posibles para una sola posición.

1const regex = /gr[ae]y/;
2
3console.log(regex.test("gray")); // true
4console.log(regex.test("grey")); // true
  • Esto es útil para adaptarse a variaciones ortográficas y alternativas simples.

Metacaracteres: atajos comunes

Los metacaracteres son símbolos que te permiten escribir patrones de uso común de una forma más corta.

1const regex = /\d{4}-\d{2}-\d{2}/;  // or new RegExp("\\d{4}-\\d{2}-\\d{2}");
2
3console.log(regex.test("2025-12-29")); // true
  • \d significa un dígito, y {n} especifica el número de repeticiones.

^ y $: Validar la cadena completa

^ y $ representan el inicio y el final de una cadena.

1const regex = /^\d+$/;
2
3console.log(regex.test("123"));   // true
4console.log(regex.test("123a"));  // false
  • Son importantes en situaciones donde se requiere una coincidencia exacta, como en entradas de formularios.

Agrupación y captura

Al usar paréntesis (), puedes extraer valores parciales.

1const text = "2025/12/29";
2const regex = /(\d{4})\/(\d{2})\/(\d{2})/;
3const [, year, month, day] = text.match(regex);
4
5console.log(year, month, day); // 2025 12 29
  • Se utiliza frecuentemente para descomponer fechas y cadenas estructuradas.

Errores comunes y puntos a tener en cuenta

Las expresiones regulares son poderosas, pero tienden a volverse difíciles de leer.

1// Hard to read
2const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+$/;
  • Si se vuelve demasiado complejo, puedes considerar añadir comentarios, dividir las expresiones o revisar el proceso en sí.

Resumen

RegExp es una característica fundamental esencial en JavaScript para describir el procesamiento de cadenas de forma simple y precisa. No necesitas aprender expresiones regulares complejas desde el principio; es importante usar métodos y sintaxis básicos como test, match y replace según tus necesidades prácticas. Si puedes tratar las expresiones regulares no como 'conocimientos especiales', sino como 'herramientas para representar patrones de forma organizada', mejorarás en gran medida la calidad y legibilidad de la validación de entradas y el procesamiento de texto.

Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.

YouTube Video