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 :

Soucis de remplacement de chaine par regexp


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Points : 116
    Points
    116
    Par défaut Soucis de remplacement de chaine par regexp
    Bonjour à tous,

    Suite à de nombreux essais je m'en remet à vous pour me faire comprendre ce que je ne comprend pas

    Je suis en train d'essayer de remplacer, dans une chaine, certaines informations.

    Pour cela j'utilise le regexp mais je n'arrive pas à trouver pourquoi ou plutôt qu'es ce que je fais faux.

    Voici ma ligne de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var tempo = VariableX.replace(/padding-left:.*px/g, "padding-left:0px");
    J'aimerais pouvoir remplacer dans la variable "VariableX" toutes les occurrences qui contiennent un padding-left:, donc jusque là ça va. Mais j'aimerais aussi pouvoir faire en sorte qu'il me remplacer n'importe quel caractère contenus entre padding-left: et le mot px. En gros imaginons qu'on a la chaîne suivante :

    Tout plein de texte........ padding-left:60px;.......Tout plein de texte

    Avec la méthode replacer j'aimerais avoir le résultat suivant:

    Tout plein de texte........ padding-left:0px;.......Tout plein de texte

    Actuellement cela me remplacer quasiment toute ma chaine

    Es-ce que l'attribut du regexp ".*" ne sert pas à prendre n'importe quel caractère ?

    Merci pour votre aide

    Cordialement

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Bonjour,
    le problème vient de ton quantifier, voila la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "margin:18px;padding-left:18px;height:25px;".replace(/padding-left:.*?px/g, "padding-left:0px");
    >> "margin:18px;padding-left:0px;height:25px;"
    En détail :
    - "." match n'importe quel caractère
    - "*" entre 0 et n fois
    - "?" rends le précédent quantifier "not-greedy" ce qui veut dire qu'il matchera le moins de caractères possible

    Si tu ne met pas le point d'intérogation "?" cela va matcher le plus de caractères possible, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "margin:18px;padding-left:18px;height:25px;".replace(/padding-left:.*px/g, "padding-left:0px");
    >> "margin:18px;padding-left:0px;"
    >> .* à capturé "18px;height:25"

  3. #3
    Membre régulier Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Points : 116
    Points
    116
    Par défaut
    Wouh punaise !

    Super Je te remercie ^^ J'étais un peu au bout de la dépression de pas comprendre, mais je ne connaissait pas le not greedy

    Merci encore cela fonctionne très bien, et merci pour le détail surtout ^^

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

Discussions similaires

  1. [RegEx] Remplacer une chaine par un graphique
    Par totof49 dans le forum Langage
    Réponses: 5
    Dernier message: 03/03/2009, 17h49
  2. Réponses: 3
    Dernier message: 11/09/2007, 17h58
  3. [Système] Remplacer une chaine par un lien hypertexte
    Par Bisûnûrs dans le forum Langage
    Réponses: 10
    Dernier message: 06/06/2007, 09h34

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