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 :

Regex pour remplacer une chaine par un lien


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Regex pour remplacer une chaine par un lien
    Bonjour, j'aimerai remplacer toutes chaines de forme "TFS:01234" et "TFS:012345" présent dans un div (class=test) et remplacer cette chaîne par un lien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(".test").match(/^TFS:[0-9]{5,6}$/).html(function (occurrence, text) {
        var textNumber = text.replace(/\s/g, ''); 
        var nouveauText = '<a target="_blank" href="http://plop:8080/tfs/web/wi.aspx?id='+textNumber.toString()+'">'+text+'</a>';
        return nouveauText;
    });
    Je ne sais pas si je suis sur la bonne voie, sachant que j'ai une erreur "Undefined" à ce jour...
    Le temps est le pire enemi de l'homme

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Tu confonds certaines choses...
    .match() est une méthode de l'objet String().
    $(".test") est une méthode jQuery renvoyant un tableau d'objets jQuery.
    Tu ne peux donc pas les combiner de la sorte.

    Il va donc falloir itérer sur tous les éléments jQuery (.each()) et faire ta transformation à partir du contenu textuel ou HTML de chaque élément (.text() ou .html()).
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut
    D'accord, mais
    Il va donc falloir itérer sur tous les éléments jQuery (.each())
    je ne vais pas le faire sur car je n'ai qu'un seul div de cette classe là. J'ai dû mal à voir la combinaison entre mon each() et mon match()...
    Le temps est le pire enemi de l'homme

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut
    J'ai vu que je pouvais utilisé replace() mais le souci c'est que j'ai besoin de ma valeur remplacée pour la nouvelle valeur. En clair, je veux transformer la chaine "TFS:01234" par "<a href="test?id="+"TFS:01234"+"></a>" , je pense que c'est une solution simplifiée de mon problème mais à voir si je peux reprendre mon ancienne valeur
    Le temps est le pire enemi de l'homme

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 27
    Points
    27
    Par défaut
    Avec un groupe capturant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var lien = "TFS:012345".replace(/^(TFS:[0-9]{5,6})$/, '<a href="test?id=$1">link</a>')
     
    // => <a href="test?id=TFS:012345">link</a>
    A lire pour appréhender les possibilités des expressions relationnelles

    http://javascript.developpez.com/tut...-rationnelles/

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

Discussions similaires

  1. Script pour remplacer une chaine de caractères par une autre
    Par babiêtiguiya dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 28/02/2012, 14h57
  2. [RegEx] Remplacer une chaine par un lien sans exploser les balises
    Par yahoowaloo dans le forum Langage
    Réponses: 5
    Dernier message: 19/07/2011, 11h39
  3. Probleme pour remplacer une goto par une getURL!
    Par romeoverso dans le forum Flash
    Réponses: 2
    Dernier message: 16/04/2008, 06h16
  4. Réponses: 3
    Dernier message: 11/09/2007, 17h58
  5. [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