输入 var str='john,doe, "1,234.56",0.00,true' 。
我试着用以下的regex
var arr = str.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g);
但得到的错误是未命名的字符串。
一个非regex的解决方案可以实现以下输出
期望的产出:约翰、无名氏、1,234.56、0.00、真
john,doe,1,234.56,0.00,true。
var str='john,doe,"1,234.56",0.00,true'
var arr = str.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g);
console.log(arr.join("."))
你可以使用 negative looakahead
和 negative lookbehind
var str='john,doe,"1,234.56",0.00,true';
var out = str.match(/(?<!\")([\w\.]+)(?!")(?:,|$)/g)
console.log(out)