如何通过转义双引号的文本来拆分String

时间:2013-05-20 20:12:11

标签: javascript regex

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

以下作品很棒

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)

String可以包含两个以上的双引号。

我在JavaScript中尝试过。

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

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

/(?:"[^"]*"|[^,]+)+/g