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