Reglas formato dirección email: RFC 5322 Simplificado

Una dirección email tiene dos partes: parte-local@dominio. Ambas tienen sintaxis estricta (RFC 5322 / RFC 6531 para Unicode).

Parte Local (Antes @)

  • Permitidos: A-Z, a-z, 0-9, ! # $ % & ' * + - / = ? ^ _ ` { | } ~, y . (punto).
  • Reglas punto: No puede empezar/terminar en punto; no puede tener puntos consecutivos (..).
  • Longitud: ≤ 64 octetos.
  • Sensible mayúsculas: Técnicamente sí (según RFC), pero la mayoría proveedores tratan como insensible.
  • Strings entrecomillados: "very.unusual@.local"@example.com — válido pero raro.

Dominio (Después @)

  • Etiquetas separadas por puntos. Cada etiqueta: 1-63 chars, a-z, 0-9, guión (no inicio/final).
  • Longitud total: ≤ 255 chars (incluyendo puntos).
  • TLD: Debe existir en zona raíz IANA (.com, .org, .io, .中文网, etc.).
  • Internacionalizado (IDN): Codificado Punycode (xn--) para DNS; Unicode en UI.

Ejemplos Válidos

  • user.name@example.com
  • user+tag@sub.domain.org
  • user-name@xn--fsq.xn--0zwm56d (IDN)
  • "quoted@local"@example.com
  • user@[IPv6:2001:db8::1] (literal dominio — raro)

Ejemplos Inválidos

  • user@.com (etiqueta vacía)
  • .user@example.com (punto inicial)
  • user..name@example.com (punto doble)
  • user@-example.com (guión inicial)
  • user@example..com (punto doble)
  • user@example.com. (punto final en contexto FQDN)

Validación Práctica

  • Regex (HTML5): ^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$
  • Mejor: Enviar email confirmación. Sintaxis ≠ entregabilidad.

Seguir la especificación; probar con email real. Casos frontera (comentarios, strings entrecomillados, literales dominio) existen pero rara vez importan en producción.