2016-04-23 15 views
1

arbeiten Ich habe diese Saite:Ersetzen Sie alle Vorkommen eines Strings in JavaScript nicht

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

ich versuche:

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

und nichts geschah. Ich verstehe nicht warum.

+0

Sie müssen die Sonderzeichen, z. '' '' '' so: '\\ [', '\\]'. – Xufox

Antwort

1

die [ typischerweise eine Klasse von Zeichen öffnet, so dass Sie es machen müssen nur ein einfaches Zeichen:

https://jsfiddle.net/hwtu29eg/

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

Der Grund, warum Sie \\ brauchen, ist, dass Sie eine einzelne \ im String müssen (als das Endergebnis in der Zeichenkette), und wenn Sie \[ verwenden, die lediglich zitiert die [ und wird '['. Weil '\\' in dem Code eine Zeichenfolge von '\' wird, daher '\[' zu machen, benötigen Sie '\\[' in dem Code.

+0

Vielen Dank! :) –

0

Verwenden regex wörtliche Flucht / und [] Meta-Symbole:

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

Der Ausgang:

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