REGEX avec exclusion des balises HTML
Bonjour,
j'essaye depuis quelques temps (sans succès donc.. :aie:) 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:
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&4 touttout <img src="/images/tout.gif" alt="" /><hr /></div>
5 tout</div>
</body>
</html> |
avec : var pattern = '('+quoi+')';
j'obtiens :
Citation:
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 :
Citation:
bonjour 1 tout le monde 2 tout
3 4 touttout
5 tout
-> 2 spans au lieu 5 !
avec : var pattern = '('+quoi+')(?=[^>]*<)';
j'obtiens :
Citation:
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 :roll: