0

私は2つの問題に直面しています。(jQueryを使用)

for (var i=0; i<len; i++) {
    var e = arr[i],               //<- strings
        re = new RegExp(e,"ig");
    target.html(
        target.html().replace(
            re, "<span class='rep'>" + e + "</span>"
        )
    );
}
  1. 置き換えた後、元の値を呼び出すことはできません。(「$ 1」のように)
  2. 置換の候補(プロパティe)に一重引用符が含まれている場合、置換することはできません。
4

2 に答える 2

2

実際には次のようなものを使用できます$1

for (var i=0; i<len; i++) {
    var e = arr[i],               //<- strings
        re = new RegExp(e,"ig");
    target.html(
        target.html().replace(
            re, "<span class='rep'>$&</span>"
        )
    ); //you could also have used $1 to refer to the first backreference, instead of the entire match
}

あなたの2番目の問題は私にはあまり明確ではありません。一重引用符は、正規表現の特殊文字ではありません。

他の問題を再現できませんでした。これが実際の例です:http://jsfiddle.net/Xsjt7/1/

于 2012-11-05T19:37:55.267 に答える
0

使用したい場合$1、 arr は単なる文字列の配列であり、結合できます:

var arr = ["what","not make any sense","n't make any sense","it's"];
var target = $('#mydiv');

var re = new RegExp("(" + arr.join("|") +")","ig");
target.html(
    target.html().replace(re, "<span class='rep'>$1</span>")
);
于 2012-11-05T20:26:34.390 に答える