0
<div class="text">[abc] [abc]</div>
<div class="text">foo</div>
<div class="text">bar</div>

jQuery:

var match = '[abc]';
$('div.text:contains(' + match + ')').each(function () {
    $(this).text($(this).text().replace(match, 'xyz'));
});

jsFiddle:http: //jsfiddle.net/WM6wG/6/

目前,这可行,但似乎与 [abc] 的任何其他实例都不匹配。我被告知在这种情况下使用正则表达式 global,但是在使用new RegExp(match, 'g');它时会重复每个字符而不是每个实例[abc]

我怎样才能调整这个,所以所有的实例都[abc]变成了xyz

4

2 回答 2

2

使用该RegExp方法(因此您可以使用g),但将您的字符串更改为'\\[abc\\]'.

[]是正则表达式中的特殊字符,因此您需要转义它们。(请注意,您还需要转义字符串文字的反斜杠。)

您还可以使用正则表达式文字代替new RegExp(...),如下所示:/\[abc\]/g.

于 2013-03-01T00:20:42.627 回答
1

\\将正则表达式构建为字符串时,必须对特殊字符进行双重转义。您可以使用此解决方案或简单地使用文字正则表达式:

$(this).text().replace(/\[abc\]/g, 'xyz')
于 2013-03-01T00:21:17.953 回答