Comment une adresse e-mail est validé en JavaScript?
Réponses
Trop de publicités?À l'aide d'expressions régulières est probablement la meilleure façon. Voici un exemple (démo):
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
Mais gardez à l'esprit que l'on ne doit pas s'appuyer uniquement sur la validation JavaScript. JavaScript peut être facilement désactivé. Ce doit être validée sur le côté serveur en tant que bien.
Juste pour être complet, ici vous avez un autre RFC 2822 conforme regex
La norme officielle est connu comme la RFC 2822. Il décrit la syntaxe des adresses email valides doivent adhérer. Vous pouvez (mais vous ne devriez pas — de lire sur) mettre en œuvre avec cette expression régulière:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
(...) Nous obtenons une mise en œuvre plus pratique de la RFC 2822 si nous omettons la syntaxe à l'aide de guillemets et entre crochets. Il sera toujours correspondre à 99,99% de toutes les adresses e-mail dans l'utilisation réelle d'aujourd'hui.
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
Un autre changement, vous pourriez faire est de permettre à tout code pays à deux lettres de domaine de premier niveau, et seuls certains domaines génériques de premier niveau. Cette regex filtres mannequin adresses e-mail comme
asdf@adsf.adsf
. Vous devez le mettre à jour que de nouveaux domaines de premier niveau sont ajoutés.
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b
Donc, même en suivant les normes officielles, il y a encore des arbitrages réalisés. Ne pas copier aveuglément les expressions régulières de bibliothèques en ligne ou des forums de discussion. Toujours tester sur vos propres données et avec vos propres applications.
C'est moi qui souligne
Wow, il y a beaucoup de complexité. Si tout ce que vous voulez faire est d'attraper le plus évident des erreurs de syntaxe, je voudrais faire quelque chose comme ceci:
\S+@\S+
Il attrape habituellement la plupart des erreurs évidentes que fait l'utilisateur et s'assure que le formulaire est surtout à droite, qui est ce que la validation JavaScript est tout au sujet.
Il y a quelque chose que vous avez à comprendre le second vous décidez d'utiliser une expression régulière pour valider des e-mails: Il est probablement pas une bonne idée. Une fois que vous avez fini avec cela, il existe de nombreuses implémentations là-bas qui peut vous obtenir à mi-chemin, cet article résume les joliment.
En bref, toutefois, la seule façon d'être absolument sûr que l'utilisateur a entré en fait un e-mail est à envoyer un e-mail et de voir ce qui se passe. Autre que cela, c'est tous simplement des suppositions.