Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用方括号替换所有内容的RegExp_Javascript_Jquery_Regex - Fatal编程技术网

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]/
匹配任何字母,az。或:

/[123abc]/
匹配123abc

所以你的正则表达式:

/[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]