双引号之间的JavaScript文本

双引号之间的JavaScript文本,javascript,regex,text,substring,Javascript,Regex,Text,Substring,我想使用JavaScript获取双引号之间的文本。我在网上找到了类似于title.match(/“*?”/)的东西但问题是,有时我在双引号之间有文本,但有时没有引号。我想说的是,有时我会收到这样的字符串:Neque porro quisquam est qui dolorem ipsum,有时会收到这样的字符串:Neque“porro quisquam est”qui dolorem ipsum。问题是,当我有包含双引号的文本时,我想检索它们之间的文本,但当它们不存在时,我想要整个文本。 我还发

我想使用JavaScript获取双引号之间的文本。我在网上找到了类似于
title.match(/“*?”/)的东西但问题是,有时我在双引号之间有文本,但有时没有引号。我想说的是,有时我会收到这样的字符串:
Neque porro quisquam est qui dolorem ipsum
,有时会收到这样的字符串:
Neque“porro quisquam est”qui dolorem ipsum
。问题是,当我有包含双引号的文本时,我想检索它们之间的文本,但当它们不存在时,我想要整个文本。 我还发现
string.indexOf(“\”)
不起作用,我真的不知道如何解决这个问题。谢谢。

试试:

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];
}
然后

编辑重新修改,以考虑废弃编辑中关于匹配多个子字符串的@AshishMaity注释,以及@JosephCho关于原始中断的注释,以防出现单个引号(在上述情况下为str3)

尝试使用此引号:

/"((?:\\.|[^"\\])*)"/

在单个正则表达式中:

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
split()函数可用于获取双引号中的值

让str1='Neque“porro quisquam est”qui dolorem ipsum';
设str2='Neque porro quisquam est qui dolorem ipsum';
函数findFirstOccurance(str){
常量匹配=str.split(“”);
返回匹配项[1]?匹配项[1]:str;
}
console.log(findFirstOccurance(str1));

console.log(findFirstOccurance(str2))是的,它就像一个符咒,但我希望文本没有“。。关于如何修改正则表达式以摆脱“”的任何想法?这是一个简单而有效的解决方案。谢谢如果只有一个引号,此解决方案将抛出一个错误!有没有更可靠的解决方案?这应该是答案
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