1

我有一个像这样的字符串:

'a, b, "c,d" e, f,'

我想使用逗号字符作为分隔符拆分我的字符串,但在括号之外。我的结果对象集应包含以下元素:

a
b
"c,d" e
f

我怎样才能做到这一点?

4

1 回答 1

1
s = 'a, b, "c,d" e, f,';
console.log(s.match(/("[^"]+"|[^,])+/g));

yield [ 'a', ' b', ' "c,d" e', ' f' ],它有额外的空格,但你可以修剪它们。

编辑:错过了e......现在已修复。

解释:

  • (A|B)+首选A(这是一个带引号的字符串)而不是 B,它是字符串的未引用部分。它匹配"c,d",然后因为+它继续匹配e
  • "[^"]+"匹配 a"后跟所有非", 后跟单个".
  • [^,]匹配任何非"
  • /regex/g使全局(匹配所有匹配项,而不仅仅是第一个匹配项)
于 2012-05-30T22:27:41.550 回答