0

出了什么问题,正如一个例子所解释的:

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]

我的代码有什么问题?

谢谢

4

3 回答 3

3

字符[]用于组成一个集合,所以[c_list]在正则表达式中不匹配字符序列[c_list],它匹配一个字符,即c, _, l, i, sor t

转义字符[]表达式。当您将模式编写为字符串时,您需要使用\\输入\模式:

form.replace(new RegExp('\\[c_list\\]\\[2\\]', 'g'), '[c_list][1]');

您也可以将正则表达式写为文字,然后仅\用于转义字符:

form.replace(/\[c_list\]\[2\]/g, '[c_list][1]');
于 2013-03-20T09:40:05.133 回答
1

在正则表达式[...]中具有定义字符类的特殊含义。我想你正在寻找

form.replace(new RegExp('\[c_list\]\[2\]', 'g'), '[c_list][1]');

括号被转义的地方。

于 2013-03-20T09:37:44.580 回答
0

转义正则表达式的括号。

于 2013-03-20T09:39:00.220 回答