Validación correo electrónico
Expresión regular que se puede utilizar para validar un correo electrónico.
const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
Desglose de la expresión:
^
y$
:^
: Marca el inicio de la cadena.$
: Marca el final de la cadena.- Esto asegura que la cadena completa sea evaluada como válida.
- Bloque anterior a @:
- Define los caracteres permitidos en la parte local (antes de
@
). - Incluye letras, números y caracteres especiales válidos para correos electrónicos.
+
: Indica que debe haber al menos un carácter y puede haber muchos.
- Define los caracteres permitidos en la parte local (antes de
@
:- Literalmente el símbolo
@
, que separa la parte local del dominio.
- Literalmente el símbolo
[a-zA-Z0-9-]+
:[a-zA-Z0-9-]
: Define los caracteres permitidos para cada parte del dominio.- Incluye letras, números y el guion (
-
), pero no permite guiones al principio o al final.
(?:\.[a-zA-Z0-9-]+)*
:(?:...)
: Agrupación sin captura.\.
: Representa literalmente un punto (.
).[a-zA-Z0-9-]+
: Define las partes del subdominio o dominio de nivel superior.*
: Permite cero o más repeticiones (es decir, puede haber múltiples niveles de dominio, comoexample.co.uk
).
Ejemplo de uso en JavaScript:
const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
const emails = [
"user@example.com",
"user.name+tag@sub.example.co.uk",
"invalid-email@", // No válido
"@example.com", // No válido
"user@.example.com" // No válido
];
emails.forEach(email => {
console.log(`${email} es válido: ${emailRegex.test(email)}`);
});
Validaciones adicionales
Aunque esta expresión cubre muchos casos, no todas las validaciones de correos electrónicos pueden hacerse con regex. Por ejemplo, validaciones como comprobar dominios reales o sintaxis avanzada (UTF-8) requerirían lógica adicional en el servidor.