Javascript 用方括号替换所有内容的RegExp
我试图替换Javascript 用方括号替换所有内容的RegExp,javascript,jquery,regex,Javascript,Jquery,Regex,我试图替换[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字符串文字,因此需要编写\\为正则表达式转义
[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字符串文字,因此需要编写
\\
为正则表达式转义创建一个反斜杠。尝试转义括号
var regexp = new RegExp('\\[' + index + '\\]', 'g');
[]
在正则表达式中是特殊的。它定义了一个字符类。例如:
/[a-z]/
匹配任何字母,a到z。或:
/[123abc]/
匹配1、2、3、a、b或c
所以你的正则表达式:
/[1]/
表示匹配1的任何字符
你需要做的是摆脱这样的困境:
/\[1\]/
或者特别是在您的代码中:
$(this).html().replace(regexp,'\['+new_id+'\]')
试试这个:
var index = 'abc123'
var regexp = new RegExp('\\[' + index + '\\]', 'g');
var new_id = new Date().getTime();
$(this).html().replace(regexp,new_id)
我更改了代码的最后一行,因为它确实更改了所有[1],只是在replace函数中添加了括号。
也要转义括号我尝试转义括号,但它仍然会替换
索引
变量的所有实例…是否为括号。您还需要转义\代码>从JS字符串文本中删除。我编辑了我的答案。啊,我们开始了。我不知道我需要双斜杠。现在工作。谢谢我尝试转义括号,但它仍然替换索引
变量的所有实例…是否为括号。从另一个答案中,我看到后斜杠也需要转义。接得好,SLaks。刚刚验证了双重转义在jsfiddle中有效。兄弟,转义特殊功能[]
是一个范围选择器,类似于[a-z]