2009-06-30 11 views
1

Gibt es eine Möglichkeit, ein Stück Code, der nicht in Anführungszeichen (einfach oder doppelt) in Javascript mit regulären Ausdrücken ist?Get Code außerhalb Anführungszeichen mit regexp in Javascript

, wenn ich diese Zeichenfolge haben:

'this is a test "this shouldn't be taken"' 

das Ergebnis sein sollte:

'this is a test' 
+1

Ihr String ist wegen des Zitats auf „nicht“ nicht gültig, – Alsciende

+1

Das Ergebnis sollten am Ende mit einem Raum ‚dies ist ein Test‘ sein , sollte es nicht? – Alsciende

+0

Ich würde raten, aber es sagt auch nicht zwischen einfachen oder doppelten Anführungszeichen, aber die Lösung ist in einfache Anführungszeichen eingeschlossen. –

Antwort

1
myString.replace(/".*?"/g, '') 

wird eine beliebige Zeichenfolge zwischen doppelten Anführungszeichen aus myString entfernen. Es behandelt jedoch keine doppelten doppelten Anführungszeichen.

0

Sie könnten den zitierten Teil Ihrer Zeichenfolge mit dem Javascript replace Funktion entfernen:

str = 'this is a test "this shouldn\'t be taken"'; 
str_without_quotes = str.replace(/(['"]).*?\1/g, "") // => 'this is a test ' 
+0

Dies ist eine gute Antwort, aber es funktioniert nicht, wenn in der Zeichenfolge ein Zeilenumbruch vorliegt. – Prestaul

2

Dies alles zwischen einfachen oder doppelten Anführungszeichen entfernen sollte, funktioniert es mit mehrzeiligen Strings (Zeichenfolgen, die enthalten \ n oder \ r), und es soll Griff auch entgangen Zitate:

var removeQuotes = /(['"])(?:\\?[\s\S])*?\1/g; 

var test = 'this is a test "this shouldn\'t be taken"'; 
test.replace(removeQuotes, ""); // 'this is a test ' 

test = 'this is a test "this sho\\"uldn\'t be taken"'; 
test.replace(removeQuotes, ""); // 'this is a test '