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