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 :

Assertions négatives arrière


Sujet :

JavaScript

Vue hybride

Mr_White Assertions négatives arrière 27/11/2015, 12h10
SpaceFrog chaine="ph truc.php aaphaa... 27/11/2015, 13h15
Mr_White Ca marche, presque ^^ ... 27/11/2015, 17h37
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Par défaut Assertions négatives arrière
    Bonjour bonjour,

    J'aurai préféré trouver ma solution tout seul, mais voila des heures que je cherche...

    Ce que je cherche à faire est pourtant simple. Transformer certain mot de mes paragraphes en lien. Le hic, c'est que mon script repère des mots qu'il ne devrai pas. Par exemple, l'un des mots est 'ph'. Donc mes lien vers page '.php' sont transformé... J'aimerai donc que mon code selectionne 'ph' quand il n'y a pas de caractère avant ou après, excepté quelque une, comme l'apostrophe par exemple.

    Car j'ai bien trouver le \b qui fonctionne, mais qui du coup ne me repère pas les mot précédé d'une apostrophe...

    Mon code :
    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
     
    // Je récupère les para
    var el = j('p').not(j('#carousel p'));
     
    	// Pour chaque paragraphe
    	el.each(function(index){
    		// Je récupère le text du paragraphe
    		var text = this.innerHTML;
     
    // Pour tout les mot de mon dictionnaire
    		for( var i = 0 ; i < dico.length ; i++){
    // Je prépare le texte de remplacement
    			var replace = '<a rel="tooltip" title="<h3>' + dico[i][0] + '</h3> ' + dico[i][1] + '">' + dico[i][0] + '</a>';
     
     
    			// Je remplace le mot du dictionnaire par son lien
    			text = text.replace(new RegExp('(?!a)'+dico[i][0]+'(?!a)', 'i'), replace);
    		}
    		this.innerHTML = text;
    	});
    Comme vous pouvez le voir, je test l'assertion négative car je ne veut pas sélectionner le caractères avant ou après mon mot, juste m'assurer qu'il ne s'agisse pas d'un caractère problématique, mais je ne trouve pas la bonne syntaxe...

    D'avance, merci pour votre aide ;o)

    EDIT : Au passage, comment on indente corectement un code copier collé ?

  2. #2
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chaine="ph truc.php aaphaa ph";
    tab=chaine.replace(/\bph\b/gi, "xx");
    console.log(tab);
    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 !

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Par défaut
    Ca marche, presque ^^

    Enfin ça règles le problème exposé en tout cas. Donc grand merci à toi. Pourtant je l'avait test ce \b... J'ai du me foiré dans mes test ^^

    Mais du coup, je ne comprends pas un truc. Je m'attendais à ce que ce \b m'exclu également les mots précédé d'apostrophe, or il n'en est rien. Je me demande donc ce que ça exclu exactement ?

    Presque... Parce qu'en solutionnant un problème, on en recontre souvent un nouveau ^^ Et là, il s'agit d'un mot se terminant par un 'é'. Pourtant, aucun problème avec les mot contenant un 'é'. Pourquoi ? Et comment faire en sorte que le é soit considéré comme n'importe quel caractère, même lorsqu'il est la fin du mot ^^

    Et voici le code actuel excluant bien le ph contenu dans .php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var express_reg = '\\b'+dico[i][0]+'\\b';
    text = text.replace(new RegExp(express_reg, 'gi'), replace);

Discussions similaires

  1. [RegEx] assertions négatives
    Par SSJ17Vegeta dans le forum Langage
    Réponses: 12
    Dernier message: 01/09/2010, 14h06
  2. [RegEx] Assertions négatives
    Par nasuu dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2010, 10h40
  3. [RegEx] Assertion avant négative
    Par orus8 dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2009, 09h34
  4. [RegEx] Assertion négative avec ereg_replace()
    Par citronbleu-v dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2008, 14h11
  5. [RegEx] Assertion négative dans une classe
    Par xuoy dans le forum Langage
    Réponses: 8
    Dernier message: 20/02/2006, 11h59

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