Validación de emails en JavaScript con regex
Clase 28 de 29 • Curso de Expresiones Regulares
Contenido del curso
El lenguaje: caracteres, operadores, y construcciones
- 5

El punto en regex: selecciona cualquier carácter
09:55 min - 6

\d \w \s: las 3 clases que localizan todo
13:55 min - 7

Cuantificadores regex: *, + y ? en acción
17:42 min - 8

Contadores en expresiones regulares
14:02 min - 9

Greedy vs lazy en regex: cuándo usar cada uno
07:47 min - 10

Negaciones con gorrito en expresiones regulares
06:49 min - 11

Cómo detectar números telefónicos sin letras
01:06 min - 12

Cómo procesar archivos CSV con millones de líneas
08:00 min
Uso práctico de Expresiones Regulares
- 13

Filtrar logs gigantes con expresiones regulares
07:22 min - 14

Expresiones regulares para URLs HTTP
08:07 min - 15

Regex para validar teléfonos con separadores y extensiones
12:30 min - 16

Validación de emails con regex
13:42 min - 17

Validación de coordenadas GPS con regex
17:16 min - 18

Validar nombres propios con regex
03:21 min
Usos avanzados en Expresiones Regulares
Expresiones Regulares en lenguajes de programación
- 20

Cómo extraer variables de URLs con regex
10:48 min - 21

Regex en múltiples lenguajes con CSV real
03:29 min - 22

Perl: CSV de fútbol en cero segundos
23:35 min - 23

Expresiones regulares en PHP: preg_match con CSV
09:29 min - 24

Extraer empates de archivos masivos con PHP
16:25 min - 25

Python regex para análisis de archivos CSV
21:58 min - 26

Lectura de archivos con BufferedReader en Java
07:59 min - 27

Escapar regex en Java: doble barra
08:48 min - 28

Validación de emails en JavaScript con regex
Viendo ahora - 29

Grep: filtra archivos masivos con regex
08:18 min
Validar correos en el navegador con JavaScript y expresiones regulares no necesita frameworks. Con un HTML mínimo, el método String.match y cambios simples en el DOM, puedes activar un botón, dar retroalimentación visual y evitar errores de entrada. Aquí verás cómo construir la regex de forma incremental, depurarla y manejar detalles como la bandera case insensitive.
¿Cómo validar un email en JavaScript con expresiones regulares?
El objetivo es detectar si el texto en un input parece un email y, si hace match, habilitar el botón y colorear el campo. La lógica se basa en un HTML mínimo, un evento onkeyup y una función validate que opera sobre el string recibido.
¿Qué estructura mínima de HTML y JavaScript se necesita?
- HTML bien formado con head, title, script, body y cierre correcto de etiquetas.
- Un input de texto con name igual a email, un id y onkeyup que llama a la función validate con this.value.
- Un botón con id y atributo disabled controlado desde JavaScript.
<!doctype html>
<html>
<head>
<title>JS + Regex</title>
<script>
function validate(str) {
console.log(str); // referencia visual en consola.
// lógica de regex y DOM aquí.
}
</script>
</head>
<body>
<input type="text" id="in" name="email" onkeyup="validate(this.value)">
<input type="button" id="boton" value="enviar" disabled>
</body>
</html>
¿Cómo construir la regex paso a paso sin atascarse?
- Empezar simple: comprobar que exista una arroba con algo antes y después, por ejemplo
.*@.para validar la idea base. - Añadir el usuario: una clase de palabra con cuantificador, por ejemplo entre 2 y 10 caracteres antes de la arroba.
- Añadir el dominio: otra palabra y un punto obligatorio.
- Añadir el TLD: una palabra con longitud entre 2 y 5.
- Aplicar bandera case insensitive o normalizar con
toLowerCase()antes del match.
Ejemplo integrado con DOM y estilos:
function validate(str) {
// usuario: 2–10, dominio: 2–10, TLD: 2–5, con bandera i.
const re = /^\w{2,10}@\w{2,10}\.\w{2,5}$/i;
const input = document.getElementById('in');
const boton = document.getElementById('boton');
if (str.match(re)) {
input.style.backgroundColor = 'blue';
boton.disabled = false;
} else {
input.style.backgroundColor = 'red';
// opcional: boton.disabled = true;
}
}
- Habilidad clave: construir la expresión regular por incrementos, validando cada paso en la consola y evitando sobreingeniería temprana.
- Palabras clave: String.match, bandera i (case insensitive), cuantificadores
{m,n}, clases de palabra\w, TLD.
¿Qué errores comunes aparecen y cómo depurarlos?
Avanzar demasiado rápido en la regex puede bloquear el progreso. La estrategia efectiva es dividir el problema, validar desde un patrón mínimo y crecer gradualmente.
- Atasco por complejidad: intentar la regex “perfecta” desde el inicio complica el debug.
- Cuantificadores sin cota superior: se observó que una cota ilimitada no funcionó como se esperaba, se optó por rangos concretos como 2–5 o 2–10.
- Diferencias entre motores: Chrome, Firefox y Safari pueden interpretar detalles de regex de forma distinta.
- Lógica invertida con disabled: recordar que
boton.disabled = falsesignifica habilitar. - Uso de alert solo para depurar: “jamás usen alerts, más que para debuggear”.
¿Cómo depurar de forma efectiva en front end?
- Imprimir el valor con
console.logpara saber qué entra a validate. - Reducir la regex a una comprobación mínima y rearmarla paso a paso.
- Probar manualmente casos típicos: usuario, presencia de
@, dominio, punto y TLD. - Confirmar el comportamiento del estilo: cambiar
backgroundColora rojo o azul para feedback inmediato.
Habilidades practicadas: depuración incremental, uso de consola, verificación visual en el DOM, control del estado de un botón.
¿Cómo mejorar la UX con cambios en el DOM al validar?
La validación no solo decide si algo es válido: también puede orientar al usuario. Un cambio de color y el estado del botón ayudan a evitar errores desde el teclado.
- Input en rojo si no hay match, azul cuando el patrón se cumple.
- Botón de enviar habilitado únicamente al hacer match.
- Control directo del DOM con
document.getElementById,element.style.backgroundColoryelement.disabled.
Ejemplo aplicado con eventos de teclado:
<input type="text" id="in" name="email" onkeyup="validate(this.value)">
<input type="button" id="boton" value="enviar" disabled>
- Conceptos aplicados: eventos de teclado (onkeyup), manipulación del DOM, estilos en línea, retroalimentación inmediata.
- Nota de continuidad: se anuncia el uso de la herramienta del sistema grep con expresiones regulares en un entorno de backend.
¿Tienes otra estrategia para construir la regex o un caso especial de TLD que te haya dado problemas? Comparte tu experiencia y comentemos mejoras posibles.