出了什么问题,正如一个例子所解释的那样:
form = 'some other [1][2] data ... data[Company][c_list][2][name_2] ... some other data';
form.replace(new RegExp('[c_list][2]', 'g'), '[c_list][1]');
获取:data[Company][c_list][2][name[c_list][1]]
需要:data[Company][c_list][1][name_2]
我的代码出了什么问题?
由于
答案 0 :(得分:3)
字符[
和]
用于创建集合,因此正则表达式中的[c_list]
与字符序列[c_list]
不匹配,它匹配一个字符这是c
,_
,l
,i
,s
或t
。
转义表达式中的字符[
和]
。当您将模式编写为字符串时,需要使用\\
将\
放入模式中:
form.replace(new RegExp('\\[c_list\\]\\[2\\]', 'g'), '[c_list][1]');
您也可以将正则表达式编写为文字,然后只使用\
来转义字符:
form.replace(/\[c_list\]\[2\]/g, '[c_list][1]');
答案 1 :(得分:1)
在正则表达式中[...]
具有定义字符类的特殊含义。我想你正在寻找
form.replace(new RegExp('\[c_list\]\[2\]', 'g'), '[c_list][1]');
括号已被转义。
答案 2 :(得分:0)
退出正则表达式的括号。