替换JavaScript中所有出现的字符串无法正常工作

时间:2016-04-23 20:03:33

标签: javascript

我有这个字符串:

<Tracking event="firstQuartile"><![CDATA[]]></Tracking>
<Tracking event="firstQuartile"><![CDATA[]]></Tracking>
<Tracking event="firstQuartile"><![CDATA[]]></Tracking>
<Tracking event="firstQuartile"><![CDATA[blah blah bla]]></Tracking>

我试试:

.replace(new RegExp('<Tracking event="firstQuartile"><![CDATA[]]></Tracking>', 'g'), ' ');

什么也没发生。我不明白为什么。

2 个答案:

答案 0 :(得分:1)

[通常会打开一类字符,所以你需要把它变成一个简单的字符:

https://jsfiddle.net/hwtu29eg/

s.replace(new RegExp('<Tracking event="firstQuartile"><!\\[CDATA\\[]]></Tracking>', 'g'), ' ');

您需要\\的原因是您需要在字符串中使用单个\(作为字符串中的最终结果),并且如果您使用\[仅引用{ {1}}并成为[。由于代码中的'['将成为'\\'的字符串,因此要将其设为'\',因此代码中需要'\['

答案 1 :(得分:0)

使用正则表达式文字转义/[]元符号:

var str = '<Tracking event="firstQuartile"><![CDATA[]]></Tracking><Tracking event="firstQuartile"><![CDATA[]]></Tracking><Tracking event="firstQuartile"><![CDATA[]]></Tracking><Tracking event="firstQuartile"><![CDATA[blah blah bla]]></Tracking>';

console.log(str.replace(/<Tracking event="firstQuartile"><!\[CDATA\[\]\]><\/Tracking>/g, ' '));

输出:

"<Tracking event="firstQuartile"><![CDATA[blah blah bla]]></Tracking>"