J'ai le même problème, un tas de texte arrive par une requête xmlhttp. Ce texte est formaté en html. J'ai besoin de mettre en évidence chaque occurrence.
str='<img src="brown fox.jpg" title="The brown fox" />'
+'<p>some text containing fox.</p>'
Le problème est que je n'ai pas besoin de mettre en évidence le texte dans les balises. Par exemple, j'ai besoin de mettre en évidence le renard :
Maintenant je peux le remplacer par :
var word="fox";
word="(\\b"+
word.replace(/([{}()[\]\\.?*+^$|=!:~-])/g, "\\$1")
+ "\\b)";
var r = new RegExp(word,"igm");
str.replace(r,"<span class='hl'>$1</span>")
Pour répondre à votre question : vous pouvez omettre le g dans les options de regexp et seule la première occurrence sera remplacée mais celle-ci reste celle de la propriété img src et détruit la balise image :
<img src="brown <span class='hl'>fox</span>.jpg" title="The brown <span
class='hl'>fox</span> />
C'est ainsi que j'ai résolu le problème, mais je me demandais s'il existait une meilleure méthode, quelque chose qui m'aurait échappé dans les expressions régulières :
str='<img src="brown fox.jpg" title="The brown fox" />'
+'<p>some text containing fox.</p>'
var word="fox";
word="(\\b"+
word.replace(/([{}()[\]\\.?*+^$|=!:~-])/g, "\\$1")
+ "\\b)";
var r = new RegExp(word,"igm");
str.replace(/(>[^<]+<)/igm,function(a){
return a.replace(r,"<span class='hl'>$1</span>");
});
5 votes
Si vous postez le code de la fonction, nous pourrons vous aider. Si vous nous demandez de créer une telle fonction pour vous... c'est moins probable. Vous devez faire quelque chose par vous-même. Commencez à faire quelque chose et revenez quand vous êtes bloqué.
7 votes
Oui, j'ai lu How to Ask et j'ai fait quelque chose par moi-même, mais je suis resté bloqué et c'est pourquoi j'ai demandé. Je travaille sur Android et j'ai peu de connaissances en javasript, c'est pourquoi je ne suis pas en mesure de le faire moi-même. Auparavant, j'utilisais un autre javascript qui faisait le travail mais pas sans certaines limitations. Je n'ai peut-être pas utilisé les bons mots en posant cette question et j'en suis désolé, mais s'il vous plaît, ne pensez pas le contraire.
1 votes
Ce plugin peut vous intéresser : github.com/julmot/jmHighlight . Il peut mettre en évidence les mots clés séparément ou en tant que terme, peut mettre en évidence la correspondance avec votre élément personnalisé et votre nom de classe et peut également rechercher les diacritiques. En outre, il vous permet de filtrer le contexte dans lequel vous recherchez des correspondances.
1 votes
Vérifier la méthode regex suivante... stackoverflow.com/a/45519242/2792959
0 votes
J'ai préparé un article à ce sujet ici, exhesham.com/2017/11/20/…