好的,我有一个大的多维JSON对象被倒入我的应用程序,其中一个对象是一个html字符串,用于创建链接。现在我无法更改此Object的输出以替换我想要的东西,因为这个对象在几个不同的应用程序中用于几个地方。其中至今工作正常。
我需要做的是替换JSON对象中的一小部分html字符串来改变它,以便它符合这个新应用程序的需要。
对象中的HTML看起来像(直接从“响应选项卡”下的firebug控制台获取,而不是整个对象数据)
<a href='\/ng\/other\/?object_id=6bfb00fb-2b76'>Some Text<\/a>
我需要做的是将该字符串中的“ng”和“other”替换为其他内容。我试过了。
var swapVal1 = data.rows[index1].vals[1].replace(\/ng\/other\/,"/new/placement/");
但是我得到了SyntaxError:非法字符第31行,它指向第一部分替换函数。那么,我需要做什么,以便暂时正确处理这个问题,直到可以在后端重写其他内容作为此问题的更好替代方案。
答案 0 :(得分:4)
你的正则表达式格式错误。试试这个:
var swapVal1 = data.rows[index1].vals[1].replace(/\\\/ng\\\/other\\\//, "/new/placement/");
正则表达式文字以/
字符为界。反斜杠字符\
用于转义正则表达式元字符,因此需要转义为\\
。由于/
字符用于表示正则表达式文字的开头和结尾,因此还需要将其转义为\/
。所以你可以打破正则表达式:
/ -> start of regex
\\ -> the first \
\/ -> the next /
ng -> the string "ng"
\\ -> the next \
\/ -> the / after that
other -> the string "other"
\\ -> the next \
\/ -> the / after that
/ -> end of the regex