[英]RegExp with square brackets replacing everything
我正在尝试替换[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 字符串文字,因此您需要编写\\
来为正则表达式转义创建一个反斜杠。
试试 escaping 的支架
var regexp = new RegExp('\\[' + index + '\\]', 'g');
[]
在正则表达式中很特殊。 它定义了一个字符 class。 例如:
/[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],只是在替换 function 中添加了括号。 并且还逃避你的括号
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.