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 avec exclusion des balises HTML


Sujet :

JavaScript

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut REGEX avec exclusion des balises HTML
    Bonjour,

    j'essaye depuis quelques temps (sans succès donc.. ) de trouver le bon motif REGEX pour remplacer du texte dans de l'HTML sans toucher aux balises HTML...

    Voici ce que j'ai de mieux pour le moment :
    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
    <script type="text/javascript">
    <!--
    function surbrillance(ou, quoi){
    	var pattern = '('+quoi+')(?=[^>]*<)'; 	// manque le n°5
    	//var pattern = '('+quoi+')(?=.<)'; 	// manque le n°2,3 et 5
    	//var pattern = '('+quoi+')'; 		// casse les balises HTML
    	var regex = new RegExp(pattern, "gi");
    	//alert(ou.innerHTML);
    	var avant = ou.innerHTML;
    	ou.innerHTML = ou.innerHTML.replace(regex, '<span style="background-color:yellow;">$1</span>');
    	alert(avant+"\r\n"+ou.innerHTML);
    }
    //-->
    </script>
    </head>
     
    <body onload="surbrillance(document.getElementById('zone'), 'tout')">
     
    <div id="zone">bonjour 1 tout <span class="tout">le monde</span> 2 tout 
    	<div><hr /><img src="" alt="" /> 3&amp;4 touttout <img src="/images/tout.gif" alt="" /><hr /></div>
     5 tout</div>
     
    </body>
    </html>
    avec : var pattern = '('+quoi+')';
    j'obtiens :
    bonjour 1 tout tout">le monde 2 tout
    3&4 touttout tout.gif" alt="">
    5 tout
    -> balises HTML cassées !


    avec : var pattern = '('+quoi+')(?=.<)';
    j'obtiens :
    bonjour 1 tout le monde 2 tout
    3 4 touttout
    5 tout
    -> 2 spans au lieu 5 !


    avec : var pattern = '('+quoi+')(?=[^>]*<)';
    j'obtiens :
    bonjour 1 tout le monde 2 tout
    3 4 touttout
    5 tout
    -> 4 spans sur 5...


    Quelqu'un pourrait-il m'aider un peu...
    Merci d'avance

  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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    il me semblait pourtant avoir donné la solution dans ton post précédent ...
    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 actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271

  4. #4
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    peux tu avoir un tout en dehors d'une balise ?

    si la reponse est non ceci devrait focntionner
    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 !

  5. #5
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    La recherche s'effectue principalement sur le texte visible/affichable... donc oui, la chaine recherchée/à remplacer se trouve en dehors des balises.
    Actuellement, le motif regex ne le fait pas à 100% car le dernier "tout" (le n°5 affichable) n'est pas détecté.

  6. #6
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    Je continue après dejeuner ...
    ventre vide n'a point de neurones ...
    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 !

  7. #7
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    bon appétit...

  8. #8
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    je suis en train de tester le pattern suivant qui a première vue semble fonctionner :
    var pattern = '('+quoi+')(?![^<]*>)';

    Je reviens...

  9. #9
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    bon bah d'après mes tests... ce motif semble correct.

    @+

  10. #10
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    ça ne doit pas prendre en compte une occurence de tout en dehors de balises avant une balise html ?
    Mais le cas ne se presente peut être pas ..


    [edit]
    Tests à l'appui il semblerait que si ...
    J'avoue ne pas comprendre pourquoi ...
    [/edit]
    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 !

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

Discussions similaires

  1. Capturer des balises HTML dans un JEditorPane avec un CaretEvent
    Par TerrorOnCity dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 03/06/2013, 17h13
  2. Problème avec XSLT et du XML contenant des balises HTML
    Par xamber dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 02/11/2011, 11h45
  3. Réponses: 22
    Dernier message: 28/08/2011, 23h12
  4. Obtenir des balises html+texte avec xpath ?
    Par apt dans le forum Langage
    Réponses: 1
    Dernier message: 23/07/2011, 12h07
  5. [AJAX] Traitement des balises html
    Par Mysti¢ dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/08/2006, 22h07

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