Regex / Jquery - 返回空值

时间:2013-11-12 16:06:23

标签: javascript jquery regex expression

我正在对引号之外的逗号进行CSV文件拆分(使用.match())进行排序,到目前为止我正在使用它:

/"[^"]*"|[^,]+/g

唯一的问题是字符串可能有几个区域:

...,xxx,,xxx,...

我想要发生的是我得到了一个数组:

[...,xxx, ,xxx,...]

但我得到了

[...,xxx,xxx,...]

将其更改为

 /"[^"]*"|[^,]*/g

效果不好。有什么想法吗?

4 个答案:

答案 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"]

DEMO:http://jsbin.com/uzaDeRe/1/edit

答案 2 :(得分:0)

不要使用替换。而是在正则表达式上分割values.split(/super awesome regexp/)但是,您可能希望更好地控制。有关更好的解决方案,请参阅this answer

答案 3 :(得分:0)

愚蠢的问题:你为什么在这里使用正则表达式?

console.log("aaa,xxx,,xxx,,yyy,zzz".split(","));

> ["aaa", "xxx", "", "xxx", "", "yyy", "zzz"]