Ich entwickle WebApp. Ich habe Feature um schnell nach Artikeln zu suchen.Wie markieren Sie Text innerhalb und außerhalb von Tags?
In zwei Wörtern Struktur ist:
- Seite
- globale Array (JSON- 100-150 Artikel) mit den Artikeln, die von ajax abgerufen wird. (mit Feldern: ID, Titel, Snippet). Titel & Snippet kann einfache Stil-Markup-Tags enthalten.
Also, wenn Benutzertyp Abfrage in Popup-Abbuchung von Feld, app
- Suchen im globalen Array
- Wenn gefundene Übereinstimmungen,
push
temporäre Suchergebnisse Array (mit Cache) - Highlight Übereinstimmungen in Temp. Ergebnisse Array und Show to Benutzer
Wie Sie sehen können, ändert Original Array nicht.
Currenty ich verwende primitive String.indexOf
, aber es kann nicht Text passen innerhalb via HTML-Tags Text (Beispiel unten) formatiert:
Frage ist über RegEx-Muster. Ich verstehe klar, dass es nicht zu empfehlen ist, RegEx zu verwenden, um mit DOM zu manipulieren, und die untenstehenden Ergebnisse sind nicht semantisch korrekt, aber es passt.
Zum Beispiel: wir haben so etwas wie diese:
<ul><li>Item <i><span style="color:red">Y</span></i></li></ul>
und wir brauchen Abfrage markieren e
, Ergebnis erwartet: ... It<em>e</em>m ...
, aber wenn Gebrauch trivial replace(/e/ig, '<em>$&</em>')
es wird e
in style="color:red"
ersetzen.
d. H. Welche RegEx-Muster, um Wörter in Tags nicht zu berühren?
Zweites Beispiel: Wir müssen Item Y
markieren, so erwartete Ergebnis ist <ul><li><em>Item <i><span style="color:red">Y</em></span></i></li></ul>
"Ich verstehe klar, dass es nicht empfohlen wird, RegEx zu verwenden" ... nein, offensichtlich nicht. Verwenden Sie einen HTML-Parser. – ocodo