我正在对引号之外的逗号进行CSV文件拆分(使用.match()
)进行排序,到目前为止我正在使用它:
/"[^"]*"|[^,]+/g
唯一的问题是字符串可能有几个区域:
...,xxx,,xxx,...
我想要发生的是我得到了一个数组:
[...,xxx, ,xxx,...]
但我得到了
[...,xxx,xxx,...]
将其更改为
/"[^"]*"|[^,]*/g
效果不好。有什么想法吗?
答案 0 :(得分:2)
你可以使用这样的替换功能:
var str = yourString.replace(/,,/g,', ,')
在那之后,你将得到你需要的正则表达式,希望它有所帮助。欢呼声。
答案 1 :(得分:1)
如果序列为,,
,我尝试更改原始正则表达式以添加空元素。它没有为"a",
添加空元素,但我认为这不是你想要的
正则表达式是:
/"[^"]*"|[^,]+|(?=,,)/g
使用示例:
var input = 'ACP,Something,,"Some long, sentence, with commas",other things';
var matches = input.match(/"[^"]*"|[^,]+|(?=,,)/g);
console.log(matches); // ["ACP", "Something", "", "\"Some long, sentence, with commas\"", "other things"]
答案 2 :(得分:0)
不要使用替换。而是在正则表达式上分割values.split(/super awesome regexp/)
但是,您可能希望更好地控制。有关更好的解决方案,请参阅this answer。
答案 3 :(得分:0)
愚蠢的问题:你为什么在这里使用正则表达式?
console.log("aaa,xxx,,xxx,,yyy,zzz".split(","));
> ["aaa", "xxx", "", "xxx", "", "yyy", "zzz"]