0

我面临两个问题。(使用 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
}

你的第二个问题对我来说不太清楚。单引号不是正则表达式中的特殊字符。

我无法复制您的其他问题。这是一个工作示例: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 回答