私はWebAppを開発しています。私は記事をすばやく検索する機能があります。二つの単語構造でタグ内およびタグ外のテキストをハイライト表示するにはどうすればよいですか?
である:AJAXによってフェッチされる物品と
- ページ
- グローバル配列(JSON、100-150項目)。 (フィールド:id、title、snippet)。タイトル&スニペットには、簡単なスタイルマークアップタグが含まれている場合があります。 (キャッシュ付き) ので
、ポップアップ・クイックサーチフィールドにユーザタイプのクエリ、グローバル配列
- 検索見つかった一致した場合、
push
一時的な検索結果の配列には - ハイライト一時的に一致します。結果配列とユーザーに表示
ご覧のとおり、元の配列は変更されていません。
Currenty私は原始的String.indexOf
を使用していますが、それは、HTMLタグのテキスト(下記の例)を経由してフォーマットされた内のテキストと一致しないことができます。
質問は、正規表現パターンについてです。私は、RegExを使ってDOMを操作することは推奨されておらず、以下の結果が意味的に正しいとは期待していませんが、は適合する必要がありますです。例えば
: は、我々はこのようなものがあります:
<ul><li>Item <i><span style="color:red">Y</span></i></li></ul>
を、我々は結果を期待、クエリe
を強調表示する必要があります:... It<em>e</em>m ...
を、しかし、些細なreplace(/e/ig, '<em>$&</em>')
使用している場合、それはあまりにもstyle="color:red"
でe
に置き換えられます。
つまり、タグ内の単語に触れないRegExパターンはありますか?
第二の例:私たちはそう結果は<ul><li><em>Item <i><span style="color:red">Y</em></span></i></li></ul>
"RegExを使用することは推奨されていないことを明確に理解しています" ...いいえ、明らかにそうではありません。 HTMLパーサーを使用します。 – ocodo