我在javascript中使用.replace()
方法将序列化对象数组转换为更简单的序列化字符串。这是我的代码:
b = //string
b = b.replace(/},{/gi, "},cb,,{");
b = b.replace(/}],[{/gi, "},cb,,row,{"); //The error is being thrown for this line
当我运行此代码时,我收到第三行的“意外令牌/”错误。为什么是这样?该线与其上方的线或多或少相同。请帮我解决这个问题。
注意:我不能提交一个没有正则表达式作为参数的字符串,因为我需要多次替换子字符串。
答案 0 :(得分:5)
在此上下文中,开头[
是一个表示字符类的特殊字符。由于之后没有]
,因此会发生错误。
您只需要逃离[
以使正则表达式正常工作:
b = b.replace(/}],\[{/gi, "},cb,,row,{");
为了保持一致性,我会毫不犹豫地逃避其他大括号字符,因为它们也是特殊字符(但恰好在这种情况下按字面解析):
b = b.replace(/\}\],\[\{/gi, "},cb,,row,{");