<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]的任何其他实例都不匹配。我被告知在这个例子中使用regex global,但是在使用new RegExp(match, 'g');
时,它会重复每个字符而不是[abc]
的每个实例
如何对此进行调整,以便[abc]
的所有实例都变为xyz
?
答案 0 :(得分:2)
使用RegExp
方法(因此您可以使用g
),但将字符串更改为'\\[abc\\]'
。
[]
是正则表达式中的特殊字符,因此您需要转义它们。 (请注意,您还需要转义字符串文字的反斜杠。)
您还可以使用正则表达式文字代替new RegExp(...)
,如下所示:/\[abc\]/g
。
答案 1 :(得分:1)
当您将正则表达式构建为字符串时,必须双重转义\\
个特殊字符。您可以使用此solution或只使用文字正则表达式:
$(this).text().replace(/\[abc\]/g, 'xyz')