私はWebAppを開発しています。記事をすばやく検索する機能があります。
2つの言葉で構造は次のとおりです。
- ページ
- ajaxによってフェッチされる記事を含むグローバル配列(json、100〜150アイテム)。(フィールド:id、title、snippet)。Title&Snippetには、シンプルなスタイルのマークアップタグが含まれている場合があります。
したがって、ユーザーがポップアップクイック検索フィールドにクエリを入力すると、アプリ
- グローバル配列で検索
- 一致
push
するものが見つかった場合、一時的な検索結果の配列(キャッシュ付き) - 臨時雇用者の一致を強調表示します。結果の配列とユーザーへの表示
ご覧のとおり、元の配列は変更されません。
現在、プリミティブを使用して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>')
と、それも置き換えe
られstyle="color:red"
ます。
つまり、タグ内の単語に触れないようにする正規表現パターンは何ですか?
2番目の例:強調表示する必要があるItem Y
ため、期待される結果は次のようになります。<ul><li><em>Item <i><span style="color:red">Y</em></span></i></li></ul>