IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Condition sur regExp [RegExp]


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Par d�faut Condition sur regExp
    Bonjour � tous,

    Je suis � la recherche d'une explication lumineuse concernant un comportement que je n'arrive pas � comprendre.

    Voil� le contexte :
    Je r�cup�re (en Jquery) dans une variable la valeur de la saisie d�une adresse mail dans un champ.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var mail = $('#adressMail').val();
    Je d�fini une expression r�guli�re pour v�rifier la structure de l�adresse mail (Je ne sais pas si cette expression et la plus optimis�e mais elle fonctionne).
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    regex_mail = new RegExp("[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+", "g");
    Je v�rifie dans la console si la saisie est conforme

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    console.log("Test de validité de l'adresse mail : " + regex_mail.test(mail));
    L� la console m'affiche -> Test de validit� de l'adresse mail : true

    J�effectue un test pour orienter les traitements en fonction de la validit� de l�adresse mail.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    If (regex_mail.test(mail)) {
    	// Traitement si adresse OK
    } else {
    	// Traitement si adresse NOK
    }
    Constat :
    Quel que soit l'information affich�e dans la console, c�est toujours le bloc � Traitement si adresse NOK � qui est ex�cut�.

    Avez-vous une id�e pour expliquer ce qui se passe ?

  2. #2
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    c'est volontaire le If ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Par d�faut
    Citation Envoy� par NoSmoking Voir le message
    Bonjour,
    c'est volontaire le If ?
    Non, erreur de saisie il faut lire if

  4. #4
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Comme tu utilise le marqueur global g la recherche suivant commence � partir de la nouvelle valeur de lastIndex.

    Je te propose de tester avec le code suivant
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    console.log("Test de validité de l'adresse mail : " + regex_mail.test(mail));
    console.log(regex_mail.lastIndex)   
    // replace le lastIndex
    regex_mail.lastIndex = 0;
    if (regex_mail.test(mail)) {
      console.log("Traitement si adresse OK");
    }
    else {
      console.log("Traitement si adresse NOK");
    }

  5. #5
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Si tu lances deux fois de suite le test reg le test se fait en effet � partir du dernier indexe trouv� dans la string.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    reg= new RegExp('a','g');
    chaine="aaa";
    console.log( reg.test(chaine), reg.lastIndex);
    console.log( reg.test(chaine), reg.lastIndex);
     
    reg.lastIndex=0; // il repart au début
    console.log( reg.test(chaine), reg.lastIndex);
    console.log( reg.test(chaine), reg.lastIndex);
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Par d�faut
    Bonjour � tous et merci pour ces explications.

    Je d�bute avec les expressions r�guli�res et je n�avais vu nulle part la notion de � lastIndex �.

    En conclusion et je trouve �a paradoxale mais tr�s amusant, si je n�avais pas voulu contr�ler la r�ponse � la fonction � test() � en affichant dans la console le r�sultat de ce test, je n�aurais pas rencontr� de probl�me.
    Je me suis bugg� le script tout seul

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [regexp] Condition sur un string
    Par Benladouche dans le forum MATLAB
    R�ponses: 7
    Dernier message: 15/07/2009, 10h26
  2. UPDATE avec condition sur d'autres tables
    Par guda dans le forum Langage SQL
    R�ponses: 7
    Dernier message: 10/03/2005, 11h20
  3. [XSLT][ACCESS]condition sur valeur
    Par kor dans le forum XSL/XSLT/XPATH
    R�ponses: 23
    Dernier message: 10/01/2005, 14h14
  4. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de donn�es
    R�ponses: 4
    Dernier message: 17/03/2004, 14h25
  5. Condition sur debug et release
    Par xave dans le forum MFC
    R�ponses: 3
    Dernier message: 04/02/2004, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo