Regex para correo electrónico

Usa /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ para comprobar que una cadena completa es un correo electrónico válido. Cada ejemplo de abajo se ha probado con el patrón, y puedes abrirlo en el Probador de Regex con las muestras ya cargadas.

Actualizado el

/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/
Abrir en el Probador de Regex
EntradaResultado
user@example.com✓ Coincide
first.last+news@mail.example.co.uk✓ Coincide
x_y%z@sub.domain.io✓ Coincide
plainaddress✗ No coincide
@example.com✗ No coincide
user@domain✗ No coincide
user name@example.com✗ No coincide
user@@example.com✗ No coincide

Cómo funciona el patrón

ParteSignificado
^Inicio de la cadena
[A-Za-z0-9._%+-]+La parte local: una o más letras, dígitos, puntos, guiones bajos, signos de porcentaje, más o guiones
@Una @ literal
[A-Za-z0-9.-]+El nombre de dominio, incluidos los subdominios
\.Un punto literal antes del dominio de nivel superior
[A-Za-z]{2,}El dominio de nivel superior: dos o más letras (com, io, museum)
$Fin de la cadena

Ejemplos de código

JavaScript

const re = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}', value))

PHP

preg_match('/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/', $value) === 1;

Notas y limitaciones

Este es el patrón práctico que usan la mayoría de formularios de registro. Acepta algunas direcciones técnicamente raras (dos puntos seguidos) y rechaza algunas válidas poco comunes (partes locales entre comillas, dominios con dirección IP). La única prueba real de un correo electrónico es enviar un enlace de confirmación. En los formularios HTML, <input type="email"> te da la validación del navegador sin esfuerzo.

Preguntas frecuentes

¿Cuál es la regex para correo electrónico?
/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ — coincide con la cadena completa. Consulta la tabla de arriba para ver qué hace cada parte.
¿Qué ejemplos coinciden?
De los ejemplos probados, coinciden estos: user@example.com, first.last+news@mail.example.co.uk, x_y%z@sub.domain.io. Los demás no.
¿Cómo pruebo esta regex?
Haz clic en “Abrir en el Probador de Regex”: el patrón, los flags y el texto de muestra se cargan automáticamente, y las coincidencias se resaltan mientras editas.