0

私は次のJSを持っています -

var pattern = new RegExp("(\\b" + value + "\\b)", 'gi')
if (pattern.test(text)) {
    text = text.replace(pattern, "<span class='class1'>$1</span>");
}

(e.g. value = 'text', text = 'Simple text <span class='class1'>simple text</span> text.')

この JS では、すべての「テキスト」単語を span タグでラップします。ただし、この場合、2 番目の「テキスト」単語が span タグで二重にラップされます。等しい値の変数であるすべての単語を置き換える必要がありますが、この単語が既に Class1 のスパンにある場合は、この単語をスキップする必要があります。

例: 最初のテキストは次のとおりです。「代替手段を使用する」および「代替手段」という単語をすべてラップする必要があります。最初に「代替手段を使用」を置き換えます。結果は次のようになります。

"When <span class="class1">using alternative</span>, the order is important since the matching algorithm will attempt to match the leftmost alternative first."

次に、「代替」を置き換えます。

"When <span class="class1">using <span class="class1">alternative</span></span>, the order is important since the matching algorithm will attempt to match the leftmost <span class="class1">alternative</span> first.".

したがって、最初の「代替」を2つのスパンタグでラップしました。そして、「代替」の 2 番目のタグは必要ありません。「代替の使用」があれば十分です。

4

0 に答える 0