jquery RegExp不像我期望的那样工作

jquery RegExp is not working as I expect

本文关键字:工作 期望 RegExp jquery      更新时间:2023-09-26

这是怎么回事,用一个例子来解释:

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]');

get: data[Company][c_list][2][name[c_list][1]]

需求:data[Company][c_list][1][name_2]

我的代码有什么问题?

谢谢

使用字符[]组成一个集合,因此正则表达式中的[c_list]不匹配字符序列[c_list],而是匹配一个字符,即c_list

转义表达式中的[]字符。当您将模式写为字符串时,您需要使用'''放在模式中:

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

您也可以将正则表达式写成文字,然后仅使用'转义字符:

form.replace(/'[c_list']'[2']/g, '[c_list][1]');

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

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

转义正则表达式的括号