Lección 42: Expresiones Regulares
🧠 Concepto
Section titled “🧠 Concepto”Las expresiones regulares (regex) son patrones para buscar, validar y manipular texto. En JavaScript se crean con /patron/flags o new RegExp('patron', 'flags').
Creación
Section titled “Creación”// Literal (recomendado)const regex1 = /hola/gi;
// Constructorconst regex2 = new RegExp('hola', 'gi');Flags comunes
Section titled “Flags comunes”| Flag | Significado |
|---|---|
g | Global (busca todas las coincidencias) |
i | Ignorar mayúsculas/minúsculas |
m | Multilínea (^ y $ por línea) |
Métodos principales
Section titled “Métodos principales”const texto = 'Hola mundo, Hola JavaScript';
// .test() — devuelve true/falseconsole.log(/hola/i.test(texto)); // true
// .exec() — devuelve información de la coincidenciaconsole.log(/hola/gi.exec(texto));// ['Hola', index: 0, input: 'Hola mundo, Hola JavaScript']
// .match() en stringsconsole.log(texto.match(/hola/gi)); // ['Hola', 'Hola']
// .replace() con regexconsole.log(texto.replace(/hola/gi, 'Adiós')); // "Adiós mundo, Adiós JavaScript"💻 Ejemplo
Section titled “💻 Ejemplo”// Clases de caracteresconst texto = 'HOLA123 prueba_123';
console.log(/\d/.test(texto)); // true (dígito)console.log(/\w/.test(texto)); // true (letra, dígito, _)console.log(/\s/.test(texto)); // true (espacio)console.log(/[aeiou]/i.test(texto)); // true (vocal)console.log(/[^aeiou]/i.test(texto)); // true (no vocal)
// Buscar emailconst emailRegex = /[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/gi;console.log(emailRegex.test('contacto@ejemplo.com')); // true
// Validar teléfono (formato español)const telefonoRegex = /^(\+34)?[6789]\d{8}$/;console.log(telefonoRegex.test('612345678')); // trueconsole.log(telefonoRegex.test('+34612345678')); // trueCuantificadores
Section titled “Cuantificadores”const texto = 'a, aa, aaa, aaaa';
console.log(texto.match(/a+/g)); // ['a', 'aa', 'aaa', 'aaaa'] (1 o más)console.log(texto.match(/a*/g)); // ['a', '', 'aa', '', ...] (0 o más)console.log(texto.match(/a?/g)); // ['a', '', 'a', 'a', ...] (0 o 1)console.log(texto.match(/a{2,3}/g)); // ['aa', 'aaa'] (entre 2 y 3)console.log(texto.match(/a{2,}/g)); // ['aa', 'aaa', 'aaaa'] (2 o más)⚠️ Nota
Section titled “⚠️ Nota”Los caracteres especiales deben escaparse con \: . ^ $ * + ? ( ) [ ] { } \ |
// Buscar literalmente un puntoconst regexPunto = /\./;console.log(regexPunto.test('texto.com')); // true
// Buscar un signo de interrogaciónconst regexInterrogacion = /\?/;console.log(regexInterrogacion.test('¿Qué?')); // truePara patrones dinámicos, usa el constructor new RegExp() y escapa caracteres especiales adecuadamente.
Usa regex para validación de formularios, búsqueda avanzada en texto, y extracción de datos. Para operaciones simples, métodos de string como includes(), startsWith() o endsWith() son más legibles.
Recursos útiles:
- Regex101 (https://regex101.com) — probar y debuggear regex
- RegExr (https://regexr.com) — referencia visual
Aprende los patrones más comunes: email, URL, teléfono, fechas. Te ahorrarán horas de validación manual.
📝 Ejercicio
Section titled “📝 Ejercicio”Escribe una función validarURL que verifique si un string es una URL válida (comienza con http:// o https://, seguido de un dominio válido).
function validarURL(url) { // Tu regex aquí}
console.log(validarURL('https://google.com')); // trueconsole.log(validarURL('http://ejemplo.org')); // trueconsole.log(validarURL('ftp://servidor.com')); // falseconsole.log(validarURL('no-es-url')); // false