Skip to content

Lección 42: Expresiones Regulares

Las expresiones regulares (regex) son patrones para buscar, validar y manipular texto. En JavaScript se crean con /patron/flags o new RegExp('patron', 'flags').

// Literal (recomendado)
const regex1 = /hola/gi;
// Constructor
const regex2 = new RegExp('hola', 'gi');
FlagSignificado
gGlobal (busca todas las coincidencias)
iIgnorar mayúsculas/minúsculas
mMultilínea (^ y $ por línea)
const texto = 'Hola mundo, Hola JavaScript';
// .test() — devuelve true/false
console.log(/hola/i.test(texto)); // true
// .exec() — devuelve información de la coincidencia
console.log(/hola/gi.exec(texto));
// ['Hola', index: 0, input: 'Hola mundo, Hola JavaScript']
// .match() en strings
console.log(texto.match(/hola/gi)); // ['Hola', 'Hola']
// .replace() con regex
console.log(texto.replace(/hola/gi, 'Adiós')); // "Adiós mundo, Adiós JavaScript"
// Clases de caracteres
const 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 email
const 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')); // true
console.log(telefonoRegex.test('+34612345678')); // true
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)

Los caracteres especiales deben escaparse con \: . ^ $ * + ? ( ) [ ] { } \ |

// Buscar literalmente un punto
const regexPunto = /\./;
console.log(regexPunto.test('texto.com')); // true
// Buscar un signo de interrogación
const regexInterrogacion = /\?/;
console.log(regexInterrogacion.test('¿Qué?')); // true

Para 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:

Aprende los patrones más comunes: email, URL, teléfono, fechas. Te ahorrarán horas de validación manual.

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')); // true
console.log(validarURL('http://ejemplo.org')); // true
console.log(validarURL('ftp://servidor.com')); // false
console.log(validarURL('no-es-url')); // false