376 votes

Validation des e-mails à l'aide de jQuery

Je suis novice en matière de jQuery et je me demandais comment l'utiliser pour valider des adresses électroniques.

0 votes

Avant d'essayer de "valider" une adresse électronique, vous devriez lire ceci : hackernoon.com/

750voto

Fabian Points 6438

Vous pouvez utiliser le bon vieux javascript pour cela :

function isEmail(email) {
  var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return regex.test(email);
}

67 votes

Oui, il le fera, n'oubliez pas que jQuery est toujours du javascript :)

36 votes

Même si cette regexp considère que la plupart des adresses du monde réel sont valides, elle présente encore beaucoup de faux positifs et de faux négatifs. Par exemple, voir exemples d'adresses électroniques valides et invalides sur Wikipedia.

0 votes

Avec cette regex ... est-ce que +@-.0 serait un email valide ?

177voto

Manish Shrivastava Points 4380

Fonction jQuery pour valider les e-mails

Je n'aime vraiment pas utiliser de plugins, surtout lorsque mon formulaire ne comporte qu'un seul champ à valider. J'utilise cette fonction et je l'appelle chaque fois que j'ai besoin de valider un champ de formulaire de courrier électronique.

 function validateEmail($email) {
  var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
  return emailReg.test( $email );
}

et maintenant d'utiliser ceci

if( !validateEmail(emailaddress)) { /* do stuff here */ }

A la vôtre !

16 votes

Vous devriez juste retourner emailReg.test($email);

7 votes

Juste pour info, cela renvoie vrai pour une adresse email vide. e.g. emailReg.text("") true . J'aurais simplement la fonction jusqu'à la déclaration de la var emailReg puis ceci : return ( $email.length > 0 && emailReg.test($email))

14 votes

La regex permettant de vérifier la validité de l'adresse électronique est obsolète puisque nous avons maintenant des extensions de nom de domaine à 6 caractères comme .museum. var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; a var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,6})?$/;

41voto

Nick Craver Points 313913

J'utiliserais le Plugin de validation jQuery pour quelques raisons.

Vous avez validé, ok super, maintenant quoi ? Vous devez afficher l'erreur, gérer son effacement lorsqu'elle est valide, afficher le nombre total d'erreurs peut-être ? Il y a beaucoup de choses qu'il peut gérer pour vous, pas besoin de réinventer la roue.

En outre, un autre avantage énorme est qu'il est hébergé sur un CDN, la version actuelle au moment de cette réponse peuvent être trouvés ici : http://www.asp.net/ajaxLibrary/CDNjQueryValidate16.ashx Cela signifie des temps de chargement plus rapides pour le client.

7 votes

Ok ... pas besoin de réinventer la roue. Mais pourquoi dois-je installer des dizaines de KByte de Javascript pour valider un champ. C'est comme construire une usine de voitures si tout ce dont vous avez besoin est une nouvelle roue :)

3 votes

@kraftb Comme indiqué dans ma réponse, il s'agit de la manipulation et de l'affichage autour de la validation, et pas seulement de la validation du texte lui-même.

5 votes

Merci pour ce @NickCraver : Cela ressemble vraiment à une approche des "meilleures pratiques" au problème de la gestion de la validation d'un courriel. Ce n'est certainement PAS comme construire une usine (écrire les librairies pour faire tout le travail) pour obtenir une roue. C'est comme suivre les instructions de l'usine pour installer la roue d'un véhicule moderne (soulever la voiture avec un cric, placer la roue - mettre les écrous de roue) au lieu d'essayer de comprendre comment installer une roue de wagon sur votre voiture. Ce plugin est très simple à utiliser. Pour effectuer la validation du formulaire, il suffit littéralement d'un include, de quelques annotations et d'un seul appel de méthode.

38voto

Andrew Bashtannik Points 304

Regardez http : //bassistance.de/jquery-plugins/jquery-plugin-validation/ . C'est un joli plugin jQuery, qui permet de construire un système de validation puissant pour les formulaires. Il y a quelques exemples utiles aquí . Ainsi, la validation du champ email dans le formulaire aura l'air de ceci :

$("#myform").validate({
  rules: {
    field: {
      required: true,
      email: true
    }
  }
});

Ver Documentation sur les méthodes de courrier électronique pour les détails et les échantillons.

1 votes

Le dernier est toujours en vie)

6 votes

Mais le format accepté est x@x (c'est bizarre) il doit x@x.x Comment puis-je réparer ça ?

2 votes

@BasheerAL-MOMANI [ [jqueryvalidation.org/jQuery.validator.methods/]](https://jqueryvalidation.org/jQuery.validator.methods/]) $.validator.methods.email = function( value, element ) { return this.optional( element ) || //^.+@.+\..+$/.test( value ); }

14voto

Robin Orheden Points 1787

Je recommande Verimail.js il dispose également d'un Plugin JQuery .

Pourquoi ? Verimail prend en charge les éléments suivants :

  • Validation de la syntaxe (selon la RFC 822)
  • Validation des TLD par l'IANA
  • Suggestion d'orthographe pour les TLD et les domaines de messagerie les plus courants
  • Refuser les domaines de comptes de messagerie temporaires tels que mailinator.com

Ainsi, outre la validation, Verimail.js vous donne également des suggestions. Ainsi, si vous tapez un courriel avec un mauvais TLD ou un domaine très similaire à un domaine de courriel commun (hotmail.com, gmail.com, etc.), il peut le détecter et suggérer une correction.

Exemples :

  • test@gnail.con -> Voulez-vous dire test@ gmail.com ?
  • test@hey.nwt -> Voulez-vous dire test@hey. net ?
  • test@hottmail.com -> Voulez-vous dire test@ hotmail.com ?

Et ainsi de suite..

Pour l'utiliser avec jQuery, il suffit d'inclure verimail.jquery.js sur votre site et exécutez la fonction ci-dessous :

$("input#email-address").verimail({
    messageElement: "p#status-message"
});

L'élément message est un élément dans lequel un message sera affiché. Il peut s'agir d'un message allant de "Votre adresse électronique n'est pas valide" à "Vous vouliez dire ... ?".

Si vous avez un formulaire et que vous voulez le restreindre de manière à ce qu'il ne puisse être soumis que si l'e-mail est valide, vous pouvez vérifier le statut en utilisant la fonction getVerimailStatus comme indiqué ci-dessous :

if($("input#email-address").getVerimailStatus() < 0){
    // Invalid
}else{
    // Valid
}

Cette fonction renvoie un code d'état entier selon l'objet Comfirm.AlphaMail.Verimail.Status. Mais la règle générale est que tout code inférieur à 0 est un code indiquant une erreur.

0 votes

.getVerimailStatus() ne renvoie pas de codes d'état numériques, juste une valeur de chaîne de caractères de success , error ou éventuellement pending (je n'ai pas vérifié le dernier).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X