Estoy escribiendo una maqueta muy simple para demostrar algo de validación de formularios HTML5. Sin embargo, noté que la validación de correo electrónico no verifica un punto en la dirección, ni busca caracteres después de dicho punto.
En otras palabras, "john @ doe" se considera válido, cuando claramente no es una dirección de correo electrónico válida; "doe" no es un dominio.
Así es como estoy codificando mi campo de correo electrónico:
<input type="email" required />
¿No es suficiente?
Mira este violín para ver a qué me refiero.
Nota: sé cómo lograr esto a través de un patrón RegEx. Me pregunto cómo alguien podría salirse con la suya usando el tipo de correo electrónico.
html
email-validation
WEFX
fuente
fuente
In other words, "john@doe" is considered valid, when it's clearly not a valid email address; doe isn't a domain.
Sí,doe
definitivamente puede ser un dominio (pienselocalhost
), y esa dirección es técnicamente válida según las especificaciones.localhost
direcciones.Respuestas:
Porque a @ b es una dirección de correo electrónico válida (por ejemplo, localhost es un dominio válido). Ver http://en.wikipedia.org/wiki/Email_address#Examples
Además, tenga en cuenta que siempre debe realizar la validación de entrada en el servidor. La validación del lado del cliente debe ser solo para dar retroalimentación al usuario y no ser confiable, ya que se puede omitir fácilmente.
fuente
au@ua
En teoría, puede tener una dirección sin un "." en.
Dado que técnicamente cosas como:
Son todos correos electrónicos válidos.
Por lo tanto, la validación estándar de HTML5 permite todos los correos electrónicos válidos, incluidos los poco comunes.
Para obtener explicaciones fáciles de leer (en lugar de leer los estándares): http://en.wikipedia.org/wiki/Email_address#Examples
fuente
uz
, que apunta directamente a una IP a partir de octubre de 2018. Si lo hacenslookup uz
, apunta a91.212.89.8
, por lo que también debería ser posible tener correo electrónico en este dominio.Intente agregar esto a la entrada
Violín
fuente
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$
El RFC 822 , capítulo 6, proporciona la especificación de una dirección en forma aumentada Backus-Naur (BNF):
El uso de esta especificación
a@b
es una dirección válida.ACTUALIZAR
Para responder al comentario de Trejkaz, agrego las siguientes definiciones. Vemos que se permite el ESPACIO pero solo entre comillas.
fuente
En esta página de MDN, muestra las expresiones regulares que los navegadores deben usar para validar el correo electrónico:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#Validation
Puede cambiar ligeramente esta expresión regular para requerir al menos un punto en el nombre de dominio: cambie la estrella
*
al final de la expresión regular a un signo más+
. Luego use esa expresión regular comopattern
atributo:fuente
Puede personalizar el patrón del campo de correo electrónico:
fuente
Así es como puede hacerlo con html5 usando el patrón de expresiones regulares. También puede incluir un mensaje personalizado para mostrar.
fuente
Este patrón siempre me funciona.
El texto debe estar en minúsculas,
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
pero creo que cubre más o menos la mayoría de los correos electrónicos.fuente