如何替换“”之外的字符串的子串

时间:2012-05-30 22:19:57

标签: javascript regex

我有一个字符串:

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

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

a
b
"c,d" e
f

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

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

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

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

<强>解释

  • (A|B)+更喜欢A(这是一个带引号的字符串)而不是B,它是字符串的非引用部分。它匹配"c,d",然后由于+它继续匹配e
  • "[^"]+"匹配",后跟所有非",后跟一个"
  • [^,]匹配任何非"
  • /regex/g使全局(匹配所有匹配,而不仅仅是第一个)