Tema 1 · Fundamentos

1. ¿Qué son las Regex? Notación Literal vs Constructor new RegExp()

Comprende el objeto RegExp, diferencias entre la sintaxis literal (/patron/flags) compilada y el constructor dinámico new RegExp().

¿Qué es una Expresión Regular en JavaScript?

En JavaScript, una Expresión Regular (RegExp) es un objeto de primera clase que describe un patrón formal de búsqueda, validación o sustitución dentro de cadenas de texto.

El motor de JavaScript (como V8 en Chrome y Node.js, SpiderMonkey en Firefox o JavaScriptCore en Safari) compila estas expresiones a autómatas finitos altamente optimizados que permiten verificar en microsegundos si un texto cumple una regla o extraer fragmentos específicos.

📌 Regla Mnemotécnica Fundamental: La notación literal /patron/ se compila al cargar el script (estática y veloz). El constructor new RegExp() compila en tiempo de ejecución (dinámico y flexible).
Diagrama Técnico: Anatomía de una Expresión Regular en JavaScript

Diagrama 1.1: Anatomía de una RegExp en JavaScript: Delimitadores, anclas, grupos nombrados, clases y banderas.

Las Dos Formas de Crear Expresiones Regulares

Característica Notación Literal (/.../flags) Constructor (new RegExp(pattern, flags))
Sintaxis const regex = /^https?:\/\//i; const regex = new RegExp('^https?:\\/\\/', 'i');
Momento de compilación Al evaluar el archivo (parse time). Muy veloz. Al ejecutarse la línea (runtime). Permite variables.
Uso de variables ❌ No soporta interpolación ✔ Sí, con template literals `${termino}`
Escape de barras invertidas Simple: /\d+/ Doble escape obligatorio en strings: '\\d+'

⚡ Notación Literal vs Constructor new RegExp()

Compara la definición estática con barras inclinadas frente al constructor dinámico para buscar palabras ingresadas por un usuario.

primer-regex.js
Solo lectura
// 1. Notación Literal (Recomendada cuando el patrón es fijo)
const patronFijo = /^usuario_[0-9]{3}$/;

console.log("--- 1. Validación con Notación Literal ---");
console.log("usuario_105:", patronFijo.test("usuario_105")); // true
console.log("usuario_abc:", patronFijo.test("usuario_abc")); // false

// 2. Constructor new RegExp() (Imprescindible para variables dinámicas)
const terminoBuscado = "kilopolis";
const flags = "i"; // 'i' para ignorar mayúsculas y minúsculas

// Atención: En un string, la barra invertida debe duplicarse (\\b)
const patronDinamico = new RegExp(`\\b${terminoBuscado}\\b`, flags);

console.log("\n--- 2. Búsqueda Dinámica con Constructor ---");
const texto1 = "Bienvenidos a la plataforma educativa Kilopolis en línea.";
const texto2 = "Este curso de programación no coincide con la palabra clave.";

console.log("¿Texto 1 contiene el término?", patronDinamico.test(texto1)); // true
console.log("¿Texto 2 contiene el término?", patronDinamico.test(texto2)); // false

// 3. Inspección de propiedades del objeto RegExp
console.log("\n--- 3. Metadatos de la RegExp ---");
console.log("Fuente (source):", patronDinamico.source);
console.log("Banderas (flags):", patronDinamico.flags);
console.log("¿Es global?:", patronDinamico.global);
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿Por qué en el constructor new RegExp("\d+", "g") se deben escribir dos barras invertidas (\\d) en lugar de una sola (\d)?
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Regex en JavaScript: Expresiones Regulares & RegExp y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.