Единственное предположение, которое я делаю, заключается в том, что между кавычками может быть что угодно, кроме другой кавычки:
/"([^"]*)"/
console.log('My full name is "John Doe"'.match(/"([^"]*)"/)[1]);
Если вы хотите поддержать экранированные кавычки, \"
, в тексте, а затем использовать следующее регулярное выражение для сопоставления:
/"((?:[^"]|(?<=\\)")*)"/
Здесь мы ищем любой символ, который не является "
или "
, которому предшествует \
(с использованием утверждения просмотра за спиной).
Но если мы получим совпадение, тогда мы должны отредактировать \
символов из \"
вхождений:
let m = '"abc \\"xyz\\""'.match(/"((?:[^"]|(?<=\\)")*)"/);
if (m) {
let s = m[1].replace(/\\"/g, '"'); // remove the '\`, if any
console.log(s)
}