1

我必须拆分输入逗号分隔的字符串并将结果存储在数组中。

以下效果很好

arr=inputString.split(",")

对于这个例子

 John, Doe       =>arr[0]="John"      arr[1]="Doe" 

但它无法获得预期的输出

"John, Doe", Dan  =>arr[0]="John, Doe" arr[1]="Dan"
 John, "Doe, Dan" =>arr[0]="John"      arr[1]="Doe, Dan"

遵循正则表达式也没有帮助

        var regExpPatternForDoubleQuotes="\"([^\"]*)\"";
        arr=inputString.match(regExpPatternForDoubleQuotes);
        console.log("txt=>"+arr)

字符串可以包含两个以上的双引号。

我在 JavaScript 上面尝试。

4

2 回答 2

2

这有效:

var re = /[ ,]*"([^"]+)"|([^,]+)/g;
var match;
var str = 'John, "Doe, Dan"';
while (match = re.exec(str)) {
    console.log(match[1] || match[2]);
}

这个怎么运作:

/
    [ ,]*     # The regex first skips whitespaces and commas
    "([^"]+)" # Then tries to match a double-quoted string
    |([^,]+)  # Then a non quoted string
/g            # With the "g" flag, re.exec will start matching where it has
              # stopped last time

在这里试试:http: //jsfiddle.net/Q5wvY/1/

于 2013-05-20T20:24:02.557 回答
0

尝试将此模式与exec方法一起使用:

/(?:"[^"]*"|[^,]+)+/g
于 2013-05-20T20:23:15.293 回答