2009-06-30 7 views
1

Y at-il un moyen d'obtenir un morceau de code qui n'est pas entre guillemets (simple ou double) en javascript avec des expressions régulières?Obtenir du code entre guillemets avec regexp en javascript

si j'ai cette chaîne:

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

le résultat devrait être:

'this is a test' 
+1

Votre chaîne n'est pas valable, en raison de la citation à « ne devrait pas » – Alsciende

+1

le résultat devrait être « ceci est un test » avec un espace à la fin , n'est-ce pas? – Alsciende

+0

Je suppose, mais il ne dit pas entre guillemets simples ou doubles, mais la solution est entourée de guillemets simples. –

Répondre

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

enlèvera toute chaîne entre guillemets de myString. Cependant, il ne gère pas les doubles quotes échappées.

0

Vous pouvez retirer la partie cité de votre chaîne avec la fonction replace javascript:

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

C'est une bonne réponse, mais cela ne fonctionne pas s'il y a un saut de ligne dans la chaîne. – Prestaul

2

Cela devrait enlever tout entre guillemets simples ou doubles, il fonctionne avec des chaînes multi-lignes (chaînes qui contiennent \ n ou \ r) et il doit également gérer les citations échappées:

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 ' 
Questions connexes