【发布时间】:2021-03-16 21:59:54
【问题描述】:
我试图弄清楚当子字符串位于'(单引号)或“(双引号)之间时如何获取子字符串
例子:
输入:“快”棕色“狐狸”“跳过”“懒狗”
输出:['quick', 'fox', 'jumps', 'lazy dog']
我曾尝试使用正则表达式执行此操作,但失败了。
const string = "The "quick" brown "fox" 'jumps' over the 'lazy dog'"
const pattern = /(?:'([^']*)')|(?:"([^"]*)")/;
console.log(strippedText.match(pattern));
但它只返回第一个单引号或双引号单词。
【问题讨论】:
-
在模式中最后一个
/之后使用全局标志g,并将函数从match更改为matchAll。所以:pattern = /(?:'([^']*)')|(?:"([^"]*)")/g;。这将返回一个数组数组,因此您需要对其进行处理以获得所需的普通数组。 -
@Samathingamajig 谢谢,我知道我忽略了一些简单的事情。
-
@Samathingamajig 请将其放入答案中,Ardz 请接受。这将帮助其他人找到答案。
-
@Tom 好的,我已经发布了答案并展示了修复嵌套数组和删除额外引号所需的额外处理
标签: javascript