Expresiones Regulares · Clase Paso a Paso

6 pasos · 2 expositores · ejemplo en vivo + explicación

1. ¿Qué es una expresión regular? + Operadores básicos

Expositor 1 Dificultad ●○○

Formulario de ejemplo

Patrón: empieza con "Hola", espacio y termina con uno o más dígitos.

Expresión regular y explicación

/^Hola \d+$/

Una expresión regular (RegEx) es una secuencia de caracteres que define un patrón de búsqueda dentro de una cadena de texto. Sirve para buscar, validar o extraer información.

En el patrón ^Hola \d+$:

OperadorSignificado
^Inicio de la cadena
$Fin de la cadena
.Cualquier carácter (uno)
*0 o más repeticiones
+1 o más repeticiones
?0 o 1 (opcional)
\dUn dígito (0-9)
\wLetra, dígito o _
[abc]Conjunto: a, b o c
(a|b)Alternativa: a o b

2. Validación de letras (nombres)

Expositor 2 Dificultad ●○○

Formulario de ejemplo

Acepta tildes y la "ñ". No permite números ni símbolos.

Expresión regular y explicación

/^[A-Za-zÁÉÍÓÚáéíóúÑñ ]+$/

Esta RegEx valida que el texto contenga únicamente letras y espacios, incluyendo vocales acentuadas y la letra ñ.

  • ^ y $ aseguran que toda la cadena cumpla el patrón.
  • [ ... ] es un conjunto de caracteres: cualquiera dentro de los corchetes es válido.
  • A-Z y a-z son rangos alfabéticos.
  • ÁÉÍÓÚáéíóúÑñ agregan letras propias del español.
  • El espacio " " dentro de los corchetes permite nombres compuestos.
  • + exige uno o más caracteres (no permite vacío).

Si se quisiera un mínimo o máximo de caracteres, se puede reemplazar el + por {2,40}.

3. Validación de números (teléfono colombiano)

Expositor 1 Dificultad ●●○

Formulario de ejemplo

Debe iniciar con 3 y tener exactamente 10 dígitos.

Expresión regular y explicación

/^3\d{9}$/

En Colombia los celulares tienen 10 dígitos e inician con 3. Esta RegEx lo valida estrictamente.

  • ^3: la cadena debe empezar con el dígito 3.
  • \d: cualquier dígito (0-9). Equivale a [0-9].
  • {9}: exactamente 9 repeticiones del elemento anterior (\d).
  • $: fin de la cadena — no se permiten más caracteres.

Otras variantes útiles:

PatrónValida
^\d+$Solo dígitos, sin tamaño fijo
^\d{1,3}$Entre 1 y 3 dígitos (edad)
^-?\d+(\.\d+)?$Número decimal con signo

4. Validación de correos electrónicos

Expositor 2 Dificultad ●●○

Formulario de ejemplo

Estructura: usuario@dominio.tld

Expresión regular y explicación

/^[\w.+-]+@[A-Za-z0-9-]+\.[A-Za-z.]{2,}$/

Un correo tiene tres bloques: parte local · @ · dominio · . · TLD.

  • [\w.+-]+: parte local — letras, dígitos, "_", ".", "+" o "-".
  • @: el signo arroba, obligatorio.
  • [A-Za-z0-9-]+: dominio — letras, dígitos y guiones.
  • \.: un punto literal (con \ escapamos el operador).
  • [A-Za-z.]{2,}: TLD de 2 o más caracteres (soporta com, co, com.co).

Importante: No existe una RegEx "perfecta" para validar correos según el RFC 5322, pero esta cubre el 99% de casos reales.

5. Secuencias binarias sin "11" consecutivos

Expositor 1 Dificultad ●●●

Formulario de ejemplo

Acepta cadenas como 0, 10, 0101001. Rechaza si aparece 11.

Expresión regular y explicación

/^(?!.*11)[01]+$/

Queremos cadenas que solo tengan 0 y 1, pero que nunca contengan la subcadena 11.

  • ^: inicio de la cadena.
  • (?!.*11): lookahead negativo. Antes de seguir, "mira hacia adelante" y asegura que no exista ningún 11 en toda la cadena. Si lo encuentra, falla.
  • [01]+: una o más apariciones de 0 o 1.
  • $: fin de la cadena.

Alternativa equivalente (sin lookahead, usando teoría de autómatas):

/^0*(10+)*1?$/

Esto describe el lenguaje: "cualquier cantidad de 0s, seguidos de bloques de un 1 + uno o más 0s, y opcionalmente un 1 al final" — es imposible producir 11 con ese patrón.

6. Detectar y extraer correos dentro de un texto

Expositor 2 Dificultad ●●●

Formulario de ejemplo

Expresión regular y explicación

/[\w.+-]+@[A-Za-z0-9-]+\.[A-Za-z.]{2,}/g

A diferencia del paso 4, ahora no usamos ^ ni $ porque no validamos toda la cadena: queremos extraer correos en cualquier posición del texto.

  • La bandera global g hace que la búsqueda continúe después de cada coincidencia y devuelva todas.
  • El patrón es el mismo del paso 4 pero sin anclas, así puede encajar dentro de un texto más largo.
  • En JavaScript usamos String.matchAll(regex) o String.match(regex) con la bandera g para obtener el arreglo de resultados.

Ejemplo en código:

const correos = texto.match(/[\w.+-]+@[A-Za-z0-9-]+\.[A-Za-z.]{2,}/g);

Las coincidencias se resaltan en verde en el panel izquierdo.

Paso 1 / 6