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 :

Question sur les regex, besoin d'une lumière


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Points : 24
    Points
    24
    Par défaut Question sur les regex, besoin d'une lumière
    Bonjour,

    JE viens poser une petite question car j'essai de comprendre comment sortir des infos d'une chaine grâce les expressions regulières.

    Je commence à comprendre les regex (tout doucement), seulement dès que ça se corse, je patauge un peu. Donc je ne demande pas la solution, mais juste si mon raisonnement tiens la route et si oui, peut être une voie à suivre pour m'aider.

    Voici une chaîne de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var chaine = 'positionTop:100, positionLeft: 150, positionRight: 20, positionBottom: 0';
    J'aimerais isoler chaque partie séparé par une virgule en un array (ou un objet quelqconque avec des propriétés) : clé = positionx - valeur x

    Merci de votre coup de main

    Fab

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonjour,

    tu peux t'appuyer sur cet exemple :
    http://www.developpez.net/forums/sho...73#post1792773

    Dans ce cas l'espace est le séparateur, si tu veux que cela soit la virgule
    essaye ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var exp = /(\w*[^\,])/gi;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Merci pour ta réponse,

    Vue sous cette angle (c'est d'ailleurs mon approche actuelle) je dois passer deux fois ma chaine pour 2 découpage,

    une fois pour obtenir (séparation par la virgule) : le couple clé/valeur (positionx/x - ex : positionTop/100)

    Et une seconde fois pour "decoupler" clé/valeur par le ":"

    Et ainsi stocker, peu importe le format finalement, quelque chose qui me donnera au final :

    obj.positionTop = 100
    obj.positionLeft = etc...

    Je ne sais pas si on peux faire ça d'une traite directement via les regex.


  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Est-ce que ceci peut te convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript">
    <!--
    function test()
    {
     var chaine = 'positionTop:100, positionLeft: 150, positionRight: 20, positionBottom: 0';
     var tab = new Array();
     var infos, i, l;
     
    /*reg exp pour n'extraire que les nombres entiers*/
    /* var exp = /\d{1,}/gi;*/ 
     
    /* reg exp pour extraire les mots sans les espaces, la virgule ni les deux points */
     var exp = /(\w*[^\,\s\:])/gi; 
     
     tab = chaine.match(exp);
     alert(tab);
     
     infos="";
     l = tab.length;
     i = 0;
     while (i<l)
     {
        if (tab[i]!=null)
           infos += "obj."+tab[i]+"=";
        i++;
        if (tab[i]!=null)
           infos += tab[i];
        i++;
        infos+="\n";
     
     }
     
     alert(infos);
     
    }
     
    //-->
    </script>
     
    </head>
     
    <body onload="test()">
     
     
    </body>
     
    </html>
    Je t'ai placé une premiere expresssion régulière (en commentaire) qui n'extrait que les nombres entiers (symbole \d{1,}).

    L'autre expression régulière permet de séparer les différentes chaines (symbole \w) : attention il ne faut pas de nombres décimaux ni de caractères spéciaux (@, caractères accentués). Le _ est autorisé.
    J'exclue les espaces (\s), la virgule, et les deux points

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    l'Array que tu cherche est fourni par la méthode split();

    est le tableau qui contiendra toues les propriétés de style;

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Points : 24
    Points
    24
    Par défaut J'en demandais pas tant! :)
    Merci à Auteur (l'Auteur?)

    C'est parfaitement ce que je cherchais à faire.

    Et vraiment j'en demandais pas tant je suis payé pour faire quoi sinon?

    Encore merci

  7. #7
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Si la réponse te convient tag (outils de la discussion)

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

Discussions similaires

  1. Question sur les "Regex" en Java
    Par zpico dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 18/09/2011, 15h37
  2. [RegEx] question sur les regex
    Par Jcpan dans le forum Langage
    Réponses: 1
    Dernier message: 22/03/2010, 10h34
  3. Question sur les Regex. interdire une chaine
    Par cysboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/05/2007, 13h49
  4. [Débutant] Question sur les lumières
    Par Mandalar dans le forum DirectX
    Réponses: 10
    Dernier message: 04/01/2006, 13h49

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