我必须将输入逗号分隔的字符串拆分并将结果存储在数组中。
以下作品很棒
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中尝试过。
答案 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
答案 1 :(得分:0)
尝试将此模式与 exec 方法一起使用:
/(?:"[^"]*"|[^,]+)+/g