Expresiones Regulares en TypeScript: sintaxis, métodos y ejemplos
Las expresiones regulares (regex) son una herramienta poderosa para trabajar con cadenas de texto. En TypeScript, no solo permiten buscar, reemplazar y verificar texto, sino que también proporcionan un tipado estricto de los resultados. En este artículo, analizaremos todos los aspectos del trabajo con RegExp en TypeScript: desde la sintaxis básica hasta técnicas avanzadas con ejemplos de código.
1. Creación de expresiones regulares en TypeScript
En TypeScript, al igual que en JavaScript, existen dos formas de crear una expresión regular:
Sintaxis literal
La forma más común y conveniente es usar barras inclinadas:
const pattern: RegExp = /hello/gi;Aquí g es búsqueda global, i es insensibilidad a mayúsculas/minúsculas. El tipo RegExp se infiere automáticamente, pero se puede especificar explícitamente para mayor claridad.
Constructor RegExp
Se utiliza cuando el patrón se forma dinámicamente:
const searchTerm: string = "world";const dynamicPattern: RegExp = new RegExp(searchTerm, "gi");El segundo argumento es una cadena con las banderas. El tipo del valor devuelto es RegExp.
2. Métodos principales de RegExp y String
TypeScript hereda todos los métodos de JavaScript, pero añade un tipado estricto. Veamos los métodos clave con ejemplos.
Método test()
Verifica si hay una coincidencia en la cadena. Devuelve boolean.
const emailRegex: RegExp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;const email: string = "user@example.com";
const isValid: boolean = emailRegex.test(email);console.log(isValid); // trueMétodo exec()
Busca una coincidencia y devuelve información detallada. Devuelve RegExpExecArray | null.
const text: string = "Precio: 1500 rublos, descuento: 200 rublos";const pricePattern: RegExp = /(\\d+)\\s*rublos/g;
let match: RegExpExecArray | null;while ((match = pricePattern.exec(text)) !== null) { console.log(`Encontrado: ${match[0]}, número: ${match[1]}`);}// Salida:// Encontrado: 1500 rublos, número: 1500// Encontrado: 200 rublos, número: 200Método match() de cadena
Funciona de manera similar a exec(), pero se invoca en la cadena. Devuelve RegExpMatchArray | null.
const phone: string = "Contactos: +7 (999) 123-45-67";const phoneRegex: RegExp = /\\+7\\s*\\(\\d{3}\\)\\s*\\d{3}-\\d{2}-\\d{2}/;
const result: RegExpMatchArray | null = phone.match(phoneRegex);if (result) { console.log(`Teléfono encontrado: ${result[0]}`); // Teléfono encontrado: +7 (999) 123-45-67}Método replace()
Reemplaza las coincidencias con una nueva cadena. Devuelve string. Soporta un callback para reemplazos complejos.
function formatDate(input: string): string { const datePattern: RegExp = /(\\d{4})-(\\d{2})-(\\d{2})/; return input.replace(datePattern, "$3.$2.$1");}
const isoDate: string = "2025-03-10";const formatted: string = formatDate(isoDate);console.log(formatted); // "10.03.2025"Método split()
Divide una cadena según una expresión regular. Devuelve string[].
const data: string = "manzana;pera;naranja;plátano";const items: string[] = data.split(/;\\s*/);console.log(items); // ["manzana", "pera", "naranja", "plátano"]3. Banderas y sus combinaciones
Las banderas controlan el comportamiento de la expresión regular. En TypeScript se especifican ya sea en el literal o como segundo argumento del constructor.
| Bandera | Descripción | Ejemplo |
|---|---|---|
g | Búsqueda global (todas las coincidencias) | /ab/g |
i | Insensibilidad a mayúsculas/minúsculas |