J'écris une maquette très simple pour démontrer une certaine validation de formulaire HTML5. Cependant, j'ai remarqué que la validation de l'e-mail ne vérifie pas le point dans l'adresse, ni ne vérifie les caractères après ledit point.
En d'autres termes, "john @ doe" est considéré comme valide, quand ce n'est clairement pas une adresse e-mail valide; "doe" n'est pas un domaine.
Voici comment je codifie mon champ email:
<input type="email" required />
N'est-ce pas assez?
Vérifiez ce violon pour voir ce que je veux dire.
Remarque: je sais comment y parvenir via un modèle RegEx à la place. Je me demande simplement comment quelqu'un pourrait s'en tirer en utilisant le type de courrier électronique à la place.
In other words, "john@doe" is considered valid, when it's clearly not a valid email address; doe isn't a domain.
Oui,doe
peut certainement être un domaine (pensezlocalhost
), et cette adresse est techniquement valide selon les spécifications.localhost
adresses.Réponses:
Parce qu'un @ b est une adresse e-mail valide (par exemple, localhost est un domaine valide). Voir http://en.wikipedia.org/wiki/Email_address#Examples
Gardez également à l'esprit que vous devez toujours effectuer la validation d'entrée dans le serveur. La validation côté client doit être uniquement destinée à donner des commentaires à l'utilisateur et ne doit pas être invoquée, car elle peut être facilement contournée.
la source
au@ua
Vous pouvez théoriquement avoir une adresse sans "." dans.
Depuis techniquement des choses telles que:
Sont tous des e-mails valides.
Ainsi, la validation HTML5 standard autorise tous les e-mails valides, y compris les plus rares.
Pour quelques explications faciles à lire (au lieu de lire les standards): http://en.wikipedia.org/wiki/Email_address#Examples
la source
uz
, qui pointe directement vers une adresse IP à partir d'octobre 2018. Si vous faites unnslookup uz
, il pointe vers91.212.89.8
, il devrait donc être possible d'avoir des e-mails sur ce domaine également.Essayez d'ajouter ceci à l'entrée
Violon
la source
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$
La RFC 822 , chapitre 6, donne la spécification d'une adresse sous forme augmentée Backus-Naur (BNF):
L'utilisation de cette spécification
a@b
est une adresse valide.METTRE À JOUR
Pour répondre au commentaire de Trejkaz, j'ajoute les définitions suivantes. Nous voyons que SPACE est autorisé mais uniquement entre guillemets.
la source
Sur cette page MDN, il montre les navigateurs d'expression régulière à utiliser pour valider l'e-mail:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#Validation
Vous pouvez légèrement modifier cette expression régulière pour exiger au moins un point dans le nom de domaine: changez l'étoile
*
à la fin de l'expression régulière en plus+
. Ensuite, utilisez cette expression régulière commepattern
attribut:la source
Vous pouvez personnaliser le modèle du champ d'e-mail:
la source
Voici comment vous pouvez le faire avec html5 en utilisant un modèle regex. Vous pouvez également inclure un message personnalisé à afficher.
la source
Ce modèle fonctionne toujours pour moi.
Le texte doit être en minuscules
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
mais je pense qu'il couvre plus ou moins la plupart des e-mails.la source