在.replace()方法中使用正则表达式

时间:2012-03-03 19:53:26

标签: javascript regex

我在javascript中使用.replace()方法将序列化对象数组转换为更简单的序列化字符串。这是我的代码:

b = //string
b = b.replace(/},{/gi, "},cb,,{");
b = b.replace(/}],[{/gi, "},cb,,row,{"); //The error is being thrown for this line

当我运行此代码时,我收到第三行的“意外令牌/”错误。为什么是这样?该线与其上方的线或多或少相同。请帮我解决这个问题。

注意:我不能提交一个没有正则表达式作为参数的字符串,因为我需要多次替换子字符串。

1 个答案:

答案 0 :(得分:5)

在此上下文中,开头[是一个表示字符类的特殊字符。由于之后没有],因此会发生错误。

您只需要逃离[以使正则表达式正常工作:

b = b.replace(/}],\[{/gi, "},cb,,row,{");

为了保持一致性,我会毫不犹豫地逃避其他大括号字符,因为它们也是特殊字符(但恰好在这种情况下按字面解析):

b = b.replace(/\}\],\[\{/gi, "},cb,,row,{");