2013-03-01 126 views
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]的任何其他实例。我被告知要使用正则表达式全球在这种情况下,但在使用new RegExp(match, 'g');将重申在每个字符,而不是的[abc]

每个实例如何调整这个所以[abc]又将所有实例为xyz

回答

2

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

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

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

1

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

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