私は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>