Javascript 删除父字符串中双引号之间的字符串的最佳方法?

Javascript 删除父字符串中双引号之间的字符串的最佳方法?,javascript,regex,string,Javascript,Regex,String,假设我有这段文字: const str = 'It\'s going to rain tomorrow. One observer said: "Oh my god, it\'s going to rain." We still don\'t know how much.'; 从字符串中完全删除“哦,天哪,要下雨了。”的最佳方法是什么?即使有多个引号,也只需删除包含在两个引号内的字符串部分 我可以考虑将其拆分为一个数组,然后跟踪该对,然后将其从数组中切片,但这既繁琐又复杂 有谁知道如何解决这个

假设我有这段文字:

const str = 'It\'s going to rain tomorrow. One observer said: "Oh my god, it\'s going to rain." We still don\'t know how much.';
从字符串中完全删除“哦,天哪,要下雨了。”的最佳方法是什么?即使有多个引号,也只需删除包含在两个引号内的字符串部分

我可以考虑将其拆分为一个数组,然后跟踪该对,然后将其从数组中切片,但这既繁琐又复杂

有谁知道如何解决这个问题吗

const str =  `It's going to rain tomorrow. One observer said: "Oh my god, it's going to rain." We still don't know how much.`;
const regex = new RegExp(/(["])(?:(?=(\\?))\2.)*?\1/g)
const replaced = str.replace(regex,'')
输出:

It's going to rain tomorrow. One observer said:  We still don't know how much. 
正则表达式改编自:

您可以使用:

/".*?"/g

console.log(`明天会下雨。一位观察者说:“哦,天哪,会下雨。”我们仍然不知道有多少。`.replace(/“*?”/g.)
忽略已指出的使用此字符串会遇到问题的事实,您可以使用
string.replace
()与regex组合使用

在您的示例中,这可以通过运行

str.replace(/“*”/g,”)
这将删除引号中出现的所有文本。结果将是

It's going to rain tomorrow. One observer said:  We still don't know how much.
您可能需要进行一些微调,以获得正确的空白


学习和使用正则表达式的一个很好的平台是,您可以在这里看到表达式中找到的所有元素。

字符串的格式与您使用的“It's-立即关闭字符串时的格式不符,您可以先用反勾号将其包装起来,`
天要下雨了……
`
console.log(str.replace(/“(.*)/,”)帖子说完全删除引号,而不仅仅是引号。看看下面我的答案。为什么这个正则表达式如此复杂?它解释了什么边缘情况?据我所知,它几乎需要10倍于简单解决方案的步骤。如果你打算在英语写作中解释引用的引号,那么你会感兴趣。我认为上述方法更适合提取引号,包括嵌套,所以我想说@tobias-g的答案更好,请看我发布的关于嵌套引用的英文写作链接。上面的解决方案似乎适合于处理JSON引用的引号,但在JavaScript上下文中,这是完全不必要的,因为JS具有本机JSON支持