正则表达式中的括号

时间:2013-03-01 00:15:55

标签: jquery regex

<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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

当您将正则表达式构建为字符串时,必须双重转义\\个特殊字符。您可以使用此solution或只使用文字正则表达式:

$(this).text().replace(/\[abc\]/g, 'xyz')