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 :

Expressions rationnelles et multi-lignes.


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut Expressions rationnelles et multi-lignes.
    Bonjour, j'ai beau me débrouiller assez bien avec les regex, j'avoue que j'ai un petit souci, là. Il s'agit des regex multi-lignes. Normalement, elles devraient fonctionner avec toute implémentation de JavaScript 1.5 ou supérieure (voir ici), mais ce n'est pas le cas (sous Firefox du moins). Me suis-je trompé quelque part ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var texte = "test\nSalut\ntest";
    var texte_regex = /test(.*?)test/m;
    var ok = texte_regex.exec(texte);
    alert(ok != null);

  2. #2
    Membre chevronné Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Par défaut
    Oué, je dirai plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var texte = "test\nSalut\ntest";
    var texte_regex = /^test(.*?)test$/i;
    if(texte.match(texte_regex)){alert('ok');}
    else{alert('pas ok');}
    Edit : J'suis pas sur de mon expression régulière mais je voulais attirer ton attention sur texte.match(reg)

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Salut et merci d'avoir pris la peine de tenter de résoudre mon problème.

    Cependant, j'utilise à bon escient la méthode exec(). Mon code posté n'est qu'un résumé du code actuel que j'utilise, puisque j'ai besoin de récupérer la valeur se trouvant dans les parenthèses. Ce n'est pas juste un test "est-ce bon ou non".

    J'ai appliqué tes modifications, mais cela ne fonctionne pas mieux (à cause des \n, je l'admets, mais j'ai besoin de les garder en l'état).

    À vrai dire je vais éclaircir ma question : comment modifier ma première ligne pour obtenir "[saut de ligne]Salut[saut de ligne]" dans l'alerte ? Par ailleurs, "test" peut ne pas être en début ou fin de ligne : c'est juste pour l'exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var texte_regex = /test(.*?)test/m;
     
    var texte = "test\nSalut\ntest";
    var result = texte_regex.exec(texte);
    alert(result != null ? result[1] : "Pas ok");

  4. #4
    Membre chevronné Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var texte_regex = new RegExp("[test][\\s\\S*][test]", "mig");
    var texte = "test\nSalut\ntest";
    if(texte.match(texte_regex)){alert('ok');}
    else{alert('pas ok');}
    Là c'est Multiline, IgnoreCase et Global
    \s Permet de capturer un "caractère blanc" (espace, retour chariot, tabulation, saut de ligne, saut de page).
    \S Permet de capturer un "caractère non blanc" (tous les caractères sauf espace, retour chariot, tabulation, saut de ligne, saut de page).
    Et ça marche !

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Ah lala ! Pas con du tout le fait d'utiliser \s et son contraire Je teste tout ça et passe en résolu si ça marche. Merci !

    Edit : ça marche impec'. Par contre, ta regex est légèrement foireuse, puisque tu places l'étoile sur le \S et non sur le [\s\S] et le test engloberait seulement le "t\nS" (puisque s fait partie de [test] Enfin, c'est parfait ! 1 jour que je suis dessus.

    Pour info, voici le script final (enfin... toujours raccourci) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var texte_regex = /test([\s\S]*?)test/m;
     
    var texte = "test\nSalut\ntest";
    var result = texte_regex.exec(texte);
    alert(result != null ? result[1] : "Pas ok");

  6. #6
    Membre chevronné Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Par défaut
    Héhé, content de t'avoir aidé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTree] Libelle multi-ligne d'un noeud
    Par dmasse dans le forum Composants
    Réponses: 6
    Dernier message: 22/07/2005, 15h48
  2. Réponses: 2
    Dernier message: 21/02/2005, 10h42
  3. [langage] Expressions rationnelles (perl/C)
    Par ma2th dans le forum Langage
    Réponses: 11
    Dernier message: 02/08/2004, 18h07
  4. [String][replaceAll][Expression régulière]Remplacement multi
    Par cpr0 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 09/04/2004, 16h40
  5. Multi lignes dans un StringGrids ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2002, 23h15

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