重新发布 - JavaScript 分割线正则表达式 - 'double quote' 和 'double-quotes'

Repost - JavaScrpt split line Regex - 'double quote' inside 'double-quotes'

如果我错过了 1 号 post 的详细信息,我深表歉意。我在字符串的双引号内添加了逗号,并将字符串添加到变量中。我不能简单地用逗号分隔。

原版Post

基本上,我需要将一行拆分成一个数组。但是我在 'double quotes' 里面 'double quote' 的时候遇到了错误。示例行是这样的:

var line = '"123","str","456",8/10/2021 7:44:47 AM,"str","str","str","","str","str",0,"789",1,"101112","Ironman"s, iPhone","+131415",30'

"123","str","456",8/10/2021 7:44:47 AM,"str","str","str","","str","str ",0,"789",1,"101112","钢铁侠"s, iPhone","+131415",30 我当前的正则表达式是:

values = line.split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/g);

我的测试工具是 https://regexr.com/,但我不确定如何创建我看到其他人 post 的彩色解释图。如果您也可以指出。

如果我删除 "Ironman s, iPhone' 中的双引号,我的正则表达式运行良好,但现在很头疼,因为我找不到有效的方法来处理。

你快到了。您只需要将 $ 替换为 (?:,|$) 因为在每个 , 拆分位置,行尾不一定会有偶数个双引号。

,(?=(?:[^"]*"[^"]*")*[^"]*(?:,|$))

例如,

const line = '"123","str","456",8/10/2021 7:44:47 AM,"str","str","str","","str","str",0,"789",1,"101112","Ironman"s, iPhone","+131415",30';

const values = line.split(/,(?=(?:[^"]*"[^"]*")*[^"]*(?:,|$))/g);

console.log(values);