Текст JavaScript между двойными кавычками

Я хотел бы получить текст между двойными кавычками, используя JavaScript. Я нашел в Интернете что-то вроде title.match(/".*?"/); но дело в том, что иногда у меня есть текст между двойными кавычками, но иногда нет кавычек. Я говорю о том, что иногда я получаю такие строки, как: Neque porro quisquam est qui dolorem ipsum и иногда такие строки, как: Neque "porro quisquam est" qui dolorem ipsum. Дело в том, что когда у меня есть текст, содержащий двойные кавычки, я хочу получить текст между ними, но когда их нет, мне нужен весь текст. Также я string.indexOf("\"") что string.indexOf("\"") не работает, и я действительно не знаю, как подойти к этой проблеме.

Ответ 1

Пытаться:

let str1 = 'Neque porro quisquam est qui dolorem ipsum';
let str2 = 'Neque "porro quisquam est" qui dolorem ipsum';
let str3 = 'Neque "porro';
let str4 = 'Neque "porro" quisquam "est" qui dolorem ipsum';

function extractFirstText(str){
  const matches = str.match(/"(.*?)"/);
  return matches
    ? matches[1]
    : str;
}


function extractAllText(str){
  const re = /"(.*?)"/g;
  const result = [];
  let current;
  while (current = re.exec(str)) {
    result.push(current.pop());
  }
  return result.length > 0
    ? result
    : [str];
}

затем

extractFirstText(str1);
//Neque porro quisquam est qui dolorem ipsum

extractFirstText(str2);
//porro quisquam est

extractText(str3);
//Neque "porro

extractText(str4);
//porro

extractAllText(str1);
//Array [ "Neque porro quisquam est qui dolorem ipsum" ]

extractAllText(str2);
//Array [ "porro quisquam est" ]

extractAllText(str3);
//Array [ "Neque \"porro" ]

extractAllText(str4);
//Array [ "porro", "est" ]

EDIT переработал, чтобы учесть как комментарий @AshishMaity в отброшенном правлении о совпадении нескольких подстрок, так и комментарий @JosephCho об исходном нарушении в случае, если есть одна цитата (str3 в приведенном выше случае)

Ответ 3

В одном регулярном выражении:

var m = s.match(/(?:"[^"]*"|^[^"]*$)/)[0].replace(/"/g, "");

КОНТРОЛЬНАЯ РАБОТА:

s = 'Neque "porro quisquam est" qui dolorem ipsum';
m = s.match(/(?:"[^"]*"|^[^"]*$)/)[0].replace(/"/g, "");
//=> porro quisquam est

s = 'Neque porro quisquam est qui dolorem ipsum';
m = s.match(/(?:"[^"]*"|^[^"]*$)/)[0].replace(/"/g, "");
//=> Neque porro quisquam est qui dolorem ipsum