Il est dit "Avec HTML5, nous n'avons plus besoin de js ou de code côté serveur pour vérifier si l'entrée de l'utilisateur est une adresse e-mail ou une URL valide"
Comment puis-je valider l'e-mail après l'entrée d'un utilisateur? et sans JS comment afficher un message si l'utilisateur saisit une mauvaise forme de son adresse e-mail.
<input type="email" pattern="[^ @]*@[^ @]*" placeholder="Enter your email">
<input type="submit" value="Submit">
Réponses:
En HTML5, vous pouvez faire comme ceci:
Et lorsque l'utilisateur appuie sur Soumettre, il affiche automatiquement un message d'erreur comme:
la source
required
attribut.com
dans un e-mail. Il ne vérifie que le signe @. Ex. Je peux entrerexample@gmail
et enregistrer le formulaire. bien que ce ne soit pas une adresse e-mail valide. Existe-t-il une solution de contournement pour vérifier correctement[email protected]
?example@gmail
peut ne pas être un e-mail valide, mais c'est un format d'adresse e-mail valide.La
input type=email
page du site www.w3.org note qu'une adresse e-mail est toute chaîne qui correspond à l'expression régulière suivante:Utilisez l'
required
attribut et unpattern
attribut pour exiger que la valeur corresponde au modèle d'expression régulière.la source
[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*
type="email"
et de vérifier lavalid
propriété booléenne sur le DOMNode - pas besoin de répéter l'expression régulière sous-jacenteUtilisation
[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}
pour[email protected]
/[email protected]
la source
postmaster@ai
est une adresse e-mail valide et que cette expression rationnelle l'interdirait également. (Source: serverfault.com/q/154991/104798 )semble être vrai lorsque le champ est vide ou valide. Cela a également d'autres drapeaux intéressants:
Testé dans Chrome.
la source
Voici l'exemple que j'utilise pour toutes mes entrées de courrier électronique. Cet exemple est ASP.NET, mais s'applique à tout:
HTML5 valide toujours l'utilisation du modèle lorsqu'il n'est pas nécessaire. Je n'en ai pas encore trouvé un qui était un faux positif.
Cela se traduit par le HTML suivant:
la source
Je sais que vous n'êtes pas après la solution Javascript, mais il y a certaines choses telles que le message de validation personnalisé qui, d'après mon expérience, ne peut être fait qu'en utilisant JS.
En outre, en utilisant JS, vous pouvez ajouter dynamiquement la validation à tous les champs de saisie de type e-mail de votre site au lieu d'avoir à modifier chaque champ de saisie.
la source
Un peu en retard pour la fête, mais cette expression régulière m'a aidé à valider l'entrée de type d'e-mail côté client. Cependant, nous devrions toujours faire la vérification côté serveur également.
Vous pouvez trouver plus de regex de toutes sortes ici .
la source
TL; DR: La seule méthode correcte à 100% est de vérifier @ -sign quelque part dans l'adresse e-mail saisie, puis de publier un message de validation à l'adresse e-mail donnée. S'ils peuvent suivre les instructions de validation dans l'e-mail , l'adresse e-mail saisie est correcte.
Longue réponse:
David Gilbertson a écrit à ce sujet il y a des années:
En d'autres termes, il est important de noter que tout type de validation basée sur une chaîne ne peut vérifier que si la syntaxe n'est pas valide. Il ne peut pas vérifier si l'utilisateur peut réellement voir l'e-mail (par exemple parce que l'utilisateur a déjà perdu les informations d'identification, l'adresse tapée de quelqu'un d'autre ou un e-mail professionnel tapé au lieu de l'adresse e-mail personnelle pour un cas d'utilisation donné). À quelle fréquence la question que vous recherchez est " Cet e-mail est-il syntaxiquement valide " au lieu de " Puis-je communiquer avec l'utilisateur en utilisant une adresse e-mail donnée "? Si vous validez la chaîne plus que "contient-elle
@
", vous essayez de répondre à l'ancienne question! Personnellement, je ne suis toujours intéressé que par cette dernière question.De plus, certaines adresses e-mail qui peuvent être syntaxiquement ou politiquement invalides fonctionnent. Par exemple,
postmaster@ai
fonctionne techniquement même si les TLD ne doivent pas avoir d'enregistrements MX . Voir également la discussion sur la validation des e-mails sur la liste de diffusion WHATWG (où HTML5 est conçu en premier lieu).la source
En utilisant HTML 5, créez simplement l'e-mail d'entrée comme:
Lorsque l'utilisateur survole la zone de saisie, une info-bulle lui demande de saisir un e-mail valide. Cependant, les formulaires Bootstrap ont un bien meilleur message d'info-bulle pour indiquer à l'utilisateur de saisir une adresse e-mail et il apparaît au moment où la valeur saisie ne correspond pas à un e-mail valide.
la source
Vous pouvez également suivre ce modèle
Réf: Dans W3Schools
la source
<input type="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" title="please enter valid email [[email protected]].">
vous pouvez également ajouter un titre pour afficher un message de validité.Selon MDN , ce RegExp permet de valider les e-mails, car les e-mails qui répondent aux spécifications doivent y correspondre.
la source
Il est très difficile de valider correctement les e-mails en utilisant simplement l'attribut HTML5 «modèle». Si vous n'utilisez pas de "modèle", quelqu'un @ sera traité. qui n'est PAS un e-mail valide.
L'utilisation
pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
nécessitera que le format soit[email protected]
cependant si l'expéditeur a un format comme[email protected]
(ou similaire) ne sera pas validé pour résoudre ce problème, vous pourriez mettrepattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
cela validera ".com.au ou .net.au ou similaire.Cependant, en utilisant cela, cela ne permettra pas à quelqu'[email protected] de valider. Donc, la simple utilisation de HTML5 pour valider les adresses e-mail n'est toujours pas totalement avec nous. Pour compléter cela, vous utiliseriez quelque chose comme ceci:
ou:
Cependant, je ne sais pas comment valider les deux ou toutes les versions d'adresses e-mail à l'aide de l'attribut de modèle HTML5.
la source
postmaster@ai
est une adresse e-mail valide et que cette expression rationnelle l'interdirait également. (Source: serverfault.com/q/154991/104798 )