我试图替换所有的[1]
(包括方括号),但是它替换了所有的1
实例,而不是所有的[1]
实例。
var index = 'abc123'
var regexp = new RegExp('[' + index + ']', 'g');
var new_id = new Date().getTime();
$(this).html().replace(regexp,'['+new_id+']')
我试图替换所有的[1]
(包括方括号),但是它替换了所有的1
实例,而不是所有的[1]
实例。
var index = 'abc123'
var regexp = new RegExp('[' + index + ']', 'g');
var new_id = new Date().getTime();
$(this).html().replace(regexp,'['+new_id+']')
你需要使用\\
字符来转义括号。
因为你正在编写Javascript字符串字面量,所以需要写\\
来创建正则表达式转义的单个反斜杠。
index
变量的实例...无论是否有括号。 - Shpigford\
。我已经编辑了我的答案。 - SLaks尝试转义括号
var regexp = new RegExp('\\[' + index + '\\]', 'g');
index
变量的实例...无论是否有括号。 - Shpigford试试这个:
var index = 'abc123'
var regexp = new RegExp('\\[' + index + '\\]', 'g');
var new_id = new Date().getTime();
$(this).html().replace(regexp,new_id)
我修改了你代码的最后一行,因为它会改变所有的 [1],只需在替换函数中再添加括号即可。 还要转义你的括号。
[]
在正则表达式中是特殊的,它定义了一个字符类。例如:
/[a-z]/
匹配任何字母,从a到z。或者:
/[123abc]/
匹配 1、2、3、a、b 或 c。
因此,您的正则表达式:
/[1]/
表示匹配 1 的任意一个字符。
你所需要做的是对 [ 和 ] 进行转义,如下所示:
/\[1\]/
或者更具体地说,在你的代码中:
$(this).html().replace(regexp,'\['+new_id+'\]')
[]
是一个范围选择器,例如[a-z]
。 - vol7ron