重新发布 - 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);
如果我错过了 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);