JSを使用して、タグの内側が読み取られたり一致したりするのを避けながら、htmlタグ+属性とスタイルを含む文字列内の特定の文字列を置き換えようとしています(元のタグをテキストに保持します)。
例えばこうなりたい<span> this is span text </span>
:<span> this is s<span class="found">pan</span> text </span>
キーワードが「パン」の場合
私はそれで正規表現を使用しようとしました..これまでの私の正規表現:
$(this).html($(this).html().replace(new RegExp("([^<\"][a-zA-Z0-9\"'\=;:]*)(" + search + ")([a-zA-Z0-9\"'\=;:]*[^>\"])", 'ig'), "$1<span class='found'>$2</span>$3"));
この正規表現は<span class="myclass"> span text </span>
、search="p" のような場合にのみ失敗します。結果は次のとおりです。
<s<span class="found">p</span>an class="myclass"> s<span class="found">p</span>an text</s<span class="found">p</span>an>
*このトピックは、特定の文字で囲まれた文字列を置換することを避けながら、一致を見つけて一致した文字列を置換しようとするすべての人に役立ちます。