我正在尝试替换[1]
的所有实例(包括括号),但不是替换[1]
的所有实例,而是替换1
的所有实例。
var index = 'abc123'
var regexp = new RegExp('[' + index + ']', 'g');
var new_id = new Date().getTime();
$(this).html().replace(regexp,'['+new_id+']')
答案 0 :(得分:4)
您需要使用\\
字符转义括号。
由于您正在编写Javascript字符串文字,因此需要编写\\
来为正则表达式转义创建单个反斜杠。
答案 1 :(得分:2)
尝试转义括号
var regexp = new RegExp('\\[' + index + '\\]', 'g');
答案 2 :(得分:0)
[]
在正则表达式中很特殊。它定义了一个字符类。例如:
/[a-z]/
匹配任何字母, a 到 z 。或者:
/[123abc]/
匹配 1 , 2 , 3 , a , b ,或者<强> C 强>
所以你的正则表达式:
/[1]/
意味着匹配 1 的任何字符。
你需要做的是逃避[和]这样:
/\[1\]/
或者特别是在您的代码中:
$(this).html().replace(regexp,'\['+new_id+'\]')
答案 3 :(得分:0)
试试这个:
var index = 'abc123'
var regexp = new RegExp('\\[' + index + '\\]', 'g');
var new_id = new Date().getTime();
$(this).html().replace(regexp,new_id)
我更改了代码的最后一行,因为它确实改变了所有[1],只是在替换函数中添加了括号。 并且也逃避括号