molily: RegExp-Problem für Glossar gelöst

Beitrag lesen

Hallo,

(...) Dieser Vorabtest ist natürlich dann ein entsprechend einfacher und schneller RegExp. Und nur wenn dieser Ausdruck matcht, wird der eigentliche komplexe Ausdruck angewendet.

Das Ganze sieht dann so aus:
for(k=0; k<glossary.length; k++) {
   var tmpRegExp = new RegExp(glossary[k]["term"], "ig");

Sehe ich es richtig, dass du bei jedem Bearbeiten eines Knotens für alle Wörter im Glossar immer neue RegExp-Objekte erzeugst? Wieso erstellst du sie nicht alle einmal am Anfang und hängst sie an das Objekt-Arrayelement an, so wie beim term-(String)Objekt, sodass du immer wieder darauf zugreifen kannst?

if(!tmpRegExp.test(parentObj.childNodes[i].nodeValue)) continue;

Wenn du nur Wörter finden willst, wird der Ausdruck wohl nicht mehr als /Wort/ beinhalten. Dann würde auch indexOf() ausreichen und du bräuchtest auch für den folgenden Schritt keine regulären Ausdrücke.

var matched = glossary[k]["regexp"].exec(parentObj.childNodes[i].nodeValue);

Mathias