2013-10-06 124 views
1

有沒有辦法使用javascript拆分CSV字符串,其中分隔符也可以作爲轉義值出現。其他的正則表達式實現用lookbehind解決了這個問題,但是由於javascript不支持lookbehind,所以我很想知道如何用一個正則表達式以一種整齊的方式來實現它。使用javascript拆分CSV

一個CSV行可能看起來像這樣

"This is\, a value",Hello,4,'This is also\, possible',true 

這必須分成(包含字符串)

[0] => "This is\, a value" 
[1] => Hello 
[2] => 4 
[3] => 'This is also\, possible' 
[4] => true 
+5

[可能的重複](http://stackoverflow.com/questions/1293147/javascript-code-to-parse-csv-data) –

+0

是的,沒有。我明確尋找一個乾淨的正則表達式可以解決我的問題。 – user2767718

回答

1

你可以嘗試一個全球性的比賽對於所有這不是一個,使用此模式:

/"[^"]+"|'[^']+'|[^,]+/g 
+0

謝謝卡西米爾。當您想要分割CSV行時,這不起作用。但是你是完全正確的,它確實給出了預期的輸出。我可以將這個表達式分組來得到結果,但最終結果還會包含逗號。就我個人而言,我發現這個解決方案比(。*?[^ \\])(,| $)好一點,因爲結果不包括逗號。 – user2767718

0

例如,你可以使用這個表達式:

(.*?[^\\])(,|$) 

正則表達式採取一切。*?直到第一個逗號,不具有\在它前面,或行尾而不是試圖分裂

+0

只是一個建議,如果你添加了這個正則表達式的解釋,OP會更容易理解和使用。 – Harry

+0

也會做下一次。謝謝@哈里 – Darka

+0

是的,這個工作,但結果確實包括逗號。如果我用這個正則表達式分割CSV行,我很接近結果。 – user2767718