Bonjour,
Je sollicite votre aide sur un problème d'expression régulière que je ne maitrise pas du tout.
Mon objectif :
Filtrer sur un forum, avec Javascript, des mots clefs et les remplacer par d'autres (entre autre une image pour faire un popup).
J'ai trouvé le code qui fonctionne très bien :
reg = new RegExp(MotsCles[i],"g")
MotCle=MotsCles[i].replace(/ /g,"_");
MotCle=noaccent(MotCle);
txt = txt.replace(reg,"<span class=\"surligne\" onMouseOver=\"overdiv++;popLayer('"+MotCle+"')\"onMouseOut=\"hideLayer();overdiv--\">" +MotsCles[i]+"</span>")
Résultat tous les mots sont bien remplacés.
Le problème arrive quand ce même mot appartient à un lien hypertexte ou à un lien image. Dans ce cas là le code remplace betement le mot, brisant ainsi le lien.
Ex :
Si
test se transforme en
<table>xyz</table>La chaine
href="www.test.fr" devient href="www.<table>xyz</table>.fr"
Je voudrais donc exclure le remplacement dans le cas où le mot est incorporé à un chaine.
Je pense qu'avec une expression régulière cela est possible mais je ne m'en sort pas.
Au début je pensais qu'il fallait juste que le mot soit précédé et suivi d'un espace mais c'est pas aussi facile car le mot peut se trouver en fin de phrase juste avant un point final.
Pourriez vous m'aider ?
Merci d'avance
Christophe.