1

たとえば、特定の文字列で"This <TERM>is</TERM> my question <TERM>for</TERM> you"、部分文字列を置き換える必要があります。

目標: 部分文字列を<MARK>強調表示用の -Tags で囲みます。

部分文字列: 'e'

望ましい結果:This <TERM>is</TERM> my qu<mark>e</mark>stion <TERM>for</TERM> you

実結果:This <T<mark>E</mark>RM>is</T<mark>E</mark>RM> my qu<mark>e</mark>stion <T<mark>E</mark>RM>for</T<mark>E</mark>RM> you

<TERM>疑似タグが変更されないようにするにはどうすればよい</TERM>ですか?

今まで、私はこれを使用しました:

私の例によれば、filterValue は部分文字列 'e' になります。

var filterStartTag = '<mark>';
var filterEndTag = '</mark>';
var replaceFilterValue = filterStartTag + filterValue + filterEndTag;
value = value.replace(new RegExp(filterValue, 'gi'), replaceFilterValue);

「t」、「te」、「erm」などの部分文字列も適切に置換できるソリューションを見つける必要があります。

どんな助けでも大歓迎です。

4

1 に答える 1

1

次のようにしてみてください: value.replace(/(e)+(?![^<]*>)/g, "$1");

は置換(e)として解釈されるもので$1あり、必要なものに一致する任意の正規表現に置き換えることができます (置換できるように括弧で囲んでください$1)。したがって、より動的にするために、次のようにすることもできます。

var r = new RegExp("(" + filterValue + ")+(?![^<]*>)", "gi");
value.replace(r, "<mark>$1</mark>");

基本的に、これは、タグで囲まれていない限り、最初の括弧内のすべてに一致することを示しています(?![^<]*>)

于 2013-06-17T11:26:53.883 に答える