18 votes

surcharger le plugin jquery validate validation de l'adresse e-mail

Je trouve que le plugin de validation jQuery regex est insuffisant pour mes besoins. Il accepte n'importe quelle adresse électronique xxx@hotmail.x comme adresse électronique valide, alors que je voudrais pouvoir fournir cette expression /^([a-zA-Z0-9_.-+])+\@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/ pour qu'elle valide la partie .com complète de l'adresse. Je suis plus préoccupé par le fait de pouvoir fournir ma propre regex que d'obtenir une regex infaillible (car il n'y a pas de regex infaillible pour la validation des e-mails).

Pour information : je fais également une validation côté serveur, mais à ce stade, je ne m'inquiète pas de savoir quelle regex d'adresse électronique est la bonne.

Y a-t-il un moyen de le faire dans la section "règles" du plugin jQuery validate ?

C'est ma section de règles en ce moment :

rules: {
                        email: {
                            required:  {
                                    depends:function(){
                                        $(this).val($.trim($(this).val()));
                                        return true;
                                    }   
                                },
                            email: true
                        },

25voto

Tom Points 1074

Je ne le ferais pas, mais pour le bien de la réponse, vous devez ajouter votre propre validation personnalisée.

//custom validation rule
$.validator.addMethod("customemail", 
    function(value, element) {
        return /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
    }, 
    "Sorry, I've enabled very strict email validation"
);

Ensuite, ajoutez à vos règles :

rules: {
                    email: {
                        required:  {
                                depends:function(){
                                    $(this).val($.trim($(this).val()));
                                    return true;
                                }   
                            },
                        customemail: true
                    },

6voto

dystroy Points 145126

Votre regex est simplement trop stricte, jQuery a raison.

"this is a valid adress !"@yes.it.is

Je vous suggère de lire ceci : Arrêtez de valider les adresses de courriel avec votre Regex complexe

1voto

Essayez ça !

   jQuery.validator.addMethod("customEmail", function(value, element) {
             return this.optional(element) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i.test(value);
            }, "Please enter valid email address!");

        $(form).validate({
             rules: {
                 email:{
                     required:true,
                     customEmail:true
                 }
             }
        });

0voto

JosephT Points 1
// Add Custom Email Validation
jQuery.validator.addMethod('customemail', function (emailaddr, element) {
      emailaddr = emailaddr.replace(/\s+/g, '');
      return this.optional(element) || 
      emailaddr.match(/^\b[A-Z0-9._%-]+@@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i);
 });

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