Получить код вне кавычек с помощью регулярного выражения в javascript

Есть ли способ получить фрагмент кода, который не находится в кавычках (одинарных или двойных) в javascript с регулярными выражениями?

если у меня есть эта строка:

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

результат должен быть:

'this is a test'

person mck89    schedule 30.06.2009    source источник
comment
Ваша строка недействительна, из-за кавычки не следует   -  person Alsciende    schedule 30.06.2009
comment
Результат должен быть «это тест» с пробелом в конце, не так ли?   -  person Alsciende    schedule 30.06.2009
comment
Я бы предположил, однако это также говорит не между одинарными или двойными кавычками, а решение заключено в одинарные кавычки.   -  person Ian Elliott    schedule 30.06.2009


Ответы (3)


Это должно удалить все, что находится между одинарными или двойными кавычками, оно работает с многострочными строками (строками, содержащими \n или \r), а также должно обрабатывать экранированные кавычки:

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 '
person Prestaul    schedule 30.06.2009

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

удалит любую строку между двойными кавычками из myString. Однако он не обрабатывает экранированные двойные кавычки.

person Alsciende    schedule 30.06.2009

Вы можете удалить часть своей строки в кавычках с помощью функции javascript replace:

str = 'this is a test "this shouldn\'t be taken"';
str_without_quotes = str.replace(/(['"]).*?\1/g, "") // => 'this is a test '
person Daniel Vandersluis    schedule 30.06.2009
comment
Это хороший ответ, но он не работает, если в строке есть разрыв строки. - person Prestaul; 01.07.2009