Se dice "Con HTML5, no necesitamos más js o un código del lado del servidor para verificar si la entrada del usuario es una dirección de correo electrónico o URL válida".
¿Cómo puedo validar el correo electrónico después de que ingrese un usuario? y sin JS cómo mostrar un mensaje si el usuario ingresa una forma incorrecta de su dirección de correo electrónico.
<input type="email" pattern="[^ @]*@[^ @]*" placeholder="Enter your email">
<input type="submit" value="Submit">
Respuestas:
En HTML5 puedes hacer esto:
Y cuando el usuario presiona enviar, automáticamente muestra un mensaje de error como:
fuente
required
atributo.com
en un correo electrónico. Solo marca el signo @. Ex. Puedo ingresarexample@gmail
y guardar el formulario. aunque no es una dirección de correo electrónico válida. ¿Existe alguna solución alternativa para comprobarlo correctamente[email protected]
?example@gmail
Puede que no sea un correo electrónico válido, pero es un formato de dirección de correo electrónico válido.La
input type=email
página del sitio www.w3.org señala que una dirección de correo electrónico es cualquier cadena que coincida con la siguiente expresión regular:Utilice el
required
atributo y unpattern
atributo para requerir que el valor coincida con el patrón de expresiones regulares.fuente
[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*
type="email"
y verificar lavalid
propiedad booleana en el DOMNode, no es necesario repetir la expresión regular subyacenteUtilizando
[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}
para[email protected]
/[email protected]
fuente
postmaster@ai
es una dirección de correo electrónico válida y esta expresión regular también prohibiría eso. (Fuente: serverfault.com/q/154991/104798 )parece ser cierto cuando el campo está vacío o es válido. Esto también tiene algunas otras banderas interesantes:
Probado en Chrome.
fuente
Este es el ejemplo que utilizo para todas las entradas de correo electrónico de mi formulario. Este ejemplo es ASP.NET, pero se aplica a cualquiera:
HTML5 todavía valida el uso del patrón cuando no es necesario. Aún no he encontrado uno que sea un falso positivo.
Esto se representa como el siguiente HTML:
fuente
Sé que no buscas la solución de Javascript, sin embargo, hay algunas cosas, como el mensaje de validación personalizado, que, según mi experiencia, solo se puede hacer con JS.
Además, al usar JS, puede agregar dinámicamente la validación a todos los campos de entrada de tipo correo electrónico dentro de su sitio en lugar de tener que modificar cada campo de entrada.
fuente
Un poco tarde para la fiesta, pero esta expresión regular me ayudó a validar la entrada del tipo de correo electrónico en el lado del cliente. Sin embargo, siempre debemos hacer la verificación en el lado del servidor también.
Puede encontrar más expresiones regulares de todo tipo aquí .
fuente
TL; DR: El único método 100% correcto es buscar @ -sign en algún lugar de la dirección de correo electrónico ingresada y luego publicar un mensaje de validación en la dirección de correo electrónico dada. Si pueden seguir las instrucciones de validación en el mensaje de correo electrónico , la dirección de correo electrónico ingresada es correcta.
Respuesta larga:
David Gilbertson escribió sobre esto hace años:
En otras palabras, es importante tener en cuenta que cualquier tipo de validación basada en cadenas solo puede verificar si la sintaxis no es válida. No puede verificar si el usuario realmente puede ver el correo electrónico (por ejemplo, porque el usuario ya perdió las credenciales, la dirección escrita de otra persona o el correo electrónico del trabajo en lugar de la dirección de correo electrónico personal para un caso de uso determinado). ¿Con qué frecuencia la pregunta que realmente busca es " este correo electrónico es sintácticamente válido " en lugar de " puedo comunicarme con el usuario usando la dirección de correo electrónico dada "? Si valida la cadena más de "¿contiene
@
", está tratando de responder la pregunta anterior! Personalmente, siempre estoy interesa la última pregunta únicamente.Además, algunas direcciones de correo electrónico que pueden ser sintáctica o políticamente inválidas funcionan. Por ejemplo,
postmaster@ai
técnicamente funciona aunque los TLD no deberían tener registros MX . También vea la discusión sobre la validación de correo electrónico en la lista de correo WHATWG (donde HTML5 está diseñado en primer lugar).fuente
Usando HTML 5, simplemente haga que el correo electrónico de entrada sea como:
Cuando el usuario se desplaza sobre el cuadro de entrada, aparecerá una información sobre herramientas indicándole que ingrese un correo electrónico válido. Sin embargo, los formularios Bootstrap tienen un mensaje de información sobre herramientas mucho mejor para decirle al usuario que ingrese una dirección de correo electrónico y aparece en el momento en que el valor ingresado no coincide con un correo electrónico válido.
fuente
Puedes seguir este patrón también
Ref: En W3Schools
fuente
<input type="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" title="please enter valid email [[email protected]].">
también puede agregar un título para mostrar un mensaje de validez.Según MDN , esta RegExp está bien para validar correos electrónicos, ya que los correos electrónicos que cumplen con las especificaciones deben coincidir.
fuente
Es muy difícil validar el correo electrónico correctamente simplemente usando el atributo HTML5 "patrón". Si no utiliza un "patrón", alguien @ será procesado. que NO es un correo electrónico válido.
El uso
pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
requerirá que el formato sea,[email protected]
sin embargo, si el remitente tiene un formato como[email protected]
(o similar) no se validará para solucionarlo, puede colocarpattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
esto validará ".com.au o .net.au o similar.Sin embargo, al usar esto, no permitirá que [email protected] valide. Entonces, en cuanto a simplemente usar HTML5 para validar direcciones de correo electrónico, todavía no está del todo con nosotros. Para completar esto, usaría algo como esto:
o:
Sin embargo, no sé cómo validar ambas o todas las versiones de direcciones de correo electrónico utilizando el atributo de patrón HTML5.
fuente
postmaster@ai
es una dirección de correo electrónico válida y esta expresión regular también prohibiría eso. (Fuente: serverfault.com/q/154991/104798 )