2013-10-06 47 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