我有一个字符串:
'a, b, "c,d" e, f,'
我想使用逗号字符作为分隔符来分割我的字符串,但是在括号之外。我的结果对象集应包含以下元素:
a
b
"c,d" e
f
我怎样才能做到这一点?
答案 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
使全局(匹配所有匹配,而不仅仅是第一个)