Expresiones regulares en TypeScript con ejemplos: guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Expresiones regulares en TypeScript: de la teoría a la práctica

\n

Las expresiones regulares (RegExp) son una herramienta poderosa para buscar, reemplazar y validar cadenas. En TypeScript funcionan igual que en JavaScript, pero añaden tipado estricto, lo que simplifica la depuración y aumenta la fiabilidad del código. En este artículo analizaremos la sintaxis, los métodos y ejemplos reales de uso de expresiones regulares en TypeScript.

\n\n

Creación de expresiones regulares en TypeScript

\n

En TypeScript existen dos formas de crear RegExp: literal y mediante el constructor. Ambas opciones están tipadas y devuelven un objeto de tipo RegExp.

\n\n

Sintaxis literal

\n

La forma más sencilla y utilizada es encerrar el patrón entre barras inclinadas. Las banderas se indican después de la segunda barra.

\n
// Búsqueda de la palabra "hello" sin distinción de mayúsculas/minúsculas\nconst pattern: RegExp = /hello/i;\nconsole.log(pattern.test('Hello World')); // true
\n\n

Constructor RegExp

\n

El constructor es útil cuando el patrón se forma dinámicamente. El primer argumento es una cadena con el patrón, el segundo son las banderas.

\n
const searchTerm: string = 'TypeScript';\nconst dynamicPattern: RegExp = new RegExp(searchTerm, 'gi');\nconsole.log('I love TypeScript and TypeScript is great'.match(dynamicPattern));\n// ['TypeScript', 'TypeScript']
\n\n

Métodos principales de RegExp en TypeScript

\n

TypeScript hereda todos los métodos de JavaScript para trabajar con expresiones regulares. Veamos los más populares.

\n\n

test() — comprobación de existencia

\n

El método test() devuelve true o false. Es útil para la validación de formularios.

\n
const emailRegex: RegExp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\nconst email: string = 'user@example.com';\nconsole.log(emailRegex.test(email)); // true
\n\n

exec() — búsqueda detallada

\n

exec() devuelve un array con la coincidencia, el índice y los grupos. Si no hay coincidencias, devuelve null.

\n
const datePattern: RegExp = /(\\d{2})\\.(\\d{2})\\.(\\d{4})/;\nconst result: RegExpExecArray | null = datePattern.exec('Hoy es 15.03.2025');\nif (result) {\n  console.log(`Día: ${result[1]}, Mes: ${result[2]}, Año: ${result[3]}`);\n  // Día: 15, Mes: 03, Año: 2025\n}
\n\n

match() y matchAll() para cadenas

\n

El método match() se invoca en una cadena y recibe un RegExp. Para la búsqueda global de todas las coincidencias, use matchAll().

\n
const text: string = 'Código 123, código 456, código 789';\nconst numbers: RegExpMatchArray | null = text.match(/\\d+/g);\nconsole.log(numbers); // ['123', '456', '789']\n\n// matchAll() devuelve un iterador\nconst matches: IterableIterator<RegExpMatchArray> = text.matchAll(/(\\d+)/g);\nfor (const match of matches) {\n  console.log(`Número encontrado: ${match[1]}`);\n}
\n\n

Ejemplos prácticos de expresiones regulares en TypeScript

\n

Ahora apliquemos la teoría a tareas reales. Todos los ejemplos están escritos teniendo en cuenta el tipado estricto de TypeScript.

\n\n

Ejemplo 1: Validación de dirección de correo electrónico

\n

Creemos una función que verifique la validez de un email. Usamos una expresión regular tipada.

\n
function isValidEmail(email: string): boolean {\n  const emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n  return emailRegex.test(email);\n}\n\nconsole.log(isValidEmail('test@mail.ru'));   // true\nconsole.log(isValidEmail('invalid-email'));  // false
\n\n

Ejemplo 2: Extracción de números de una cadena

\n

A menudo es necesario obtener todos los números de un texto. Usamos búsqueda global con la bandera g.

\n
function extractNumbers(text: string): number[] {\n  const numberPattern: RegExp = /\\d+/g;\n  const matches: RegExpMatchArray | null = text.match(numberPattern);\n  return matches ? matches.map(Number) : [];\n}\n\nconst result: number[] = extractNumbers('Precio: 2500 rub, descuento 300 rub');\nconsole.log(result); // [2500, 300]
\n\

Blogs

Book Recommendations