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));

yields [ 'a', ' b', ' "c,d" e', ' f' ]、余分なスペースがありますが、削除できます。

編集:見逃したe...修正されました。

説明:

  • (A|B)+A文字列の引用符で囲まれていない部分である B の代わりに (引用符で囲まれた文字列) を優先します。一致"c,d"するので、+一致し続けeます。
  • "[^"]+""は、 a の後にすべての非"が続き、その後に 1 つの が続くものと一致し"ます。
  • [^,]非一致"
  • /regex/gグローバルにします (最初の一致だけでなく、すべての一致に一致します)
于 2012-05-30T22:27:41.550 に答える