Javascript 在“之间获取多个子字符串”;或';
当子字符串位于“(单引号)或“(双引号)之间时,我试图找出如何获取子字符串 例如: 输入:“快速”棕色“狐狸”跳过“懒狗” 输出:['quick','fox','jumps','lazy dog'] 我试过用正则表达式来做这个,但失败了Javascript 在“之间获取多个子字符串”;或';,javascript,Javascript,当子字符串位于“(单引号)或“(双引号)之间时,我试图找出如何获取子字符串 例如: 输入:“快速”棕色“狐狸”跳过“懒狗” 输出:['quick','fox','jumps','lazy dog'] 我试过用正则表达式来做这个,但失败了 const string = "The "quick" brown "fox" 'jumps' over the 'lazy dog'" const pattern = /(?:'([^']*
const string = "The "quick" brown "fox" 'jumps' over the 'lazy dog'"
const pattern = /(?:'([^']*)')|(?:"([^"]*)")/;
console.log(strippedText.match(pattern));
但它只返回第一个单引号或双引号单词。在模式中最后一个
/
之后使用全局标志g
,并将函数从match
更改为matchAll
。因此:模式=/(?:'([^']*)|((?:“([^']*)”)”)/g代码>。这将返回一个数组数组,因此需要对其进行处理,以获得所需的普通数组
const string=`The“quick”brown“fox”跳过“lazy dog”`;//使用反勾号,因为我们使用“and”
常量模式=/(?:'([^']*))|(?:“([^”]*)”)/g;//模式的末尾有全局标志“g”,因此它允许多个匹配
const matches=[…string.matchAll(pattern)]//使用扩展运算符“…”将RegExpStringIterator转换为数组
.map(([\ux,first,second])=>first??second);//将数组数组转换为合理的数组。
console.log(匹配项)代码>在模式中最后一个/
之后使用全局标志g
,并将函数从match
更改为matchAll
。所以:pattern=/(?:'([^']*))|(?:“([^”]*)”)/g、
。这将返回一个数组数组,因此您需要对其进行处理,以获得所需的普通数组。@Samathingamajig谢谢,我知道这是我忽略的一件简单的事情。@Samathingamajig请将其放入答案中,Ardz请接受。这将帮助其他人找到答案。@Tom好的,我已经发布了一个答案&s但是,修复嵌套数组和删除额外引号需要额外的处理