请教一个正则

需求:
自定义分隔符,拆分出满足下面需求的字符串。

  1. 双引号内的字符串,忽略分隔符。如a,b,"c,d"拆分得到['a', 'b', '"c,d"']
  2. 字符串内的单元可能包含双引号也可能不包含。如a,b,"c_d","e","f,g",h

分隔符不一定是逗号,是自定义的,可以是空格,可以是a-z中的任意一个字符。也就是正则生成的过程大概是如下形式:

var splitBy = ','
var reg = new Reg(`...${split}...`)

可以提供一些样本字符串作为验证样本:

逗号分隔符:(半角逗号,英文的)
"rule_id","time,ti","module","dst_port","nat_src_ip","nat_src_port","nat_dst_ip","nat_dst_port","comment","src_mac","dst_mac","user","app_name","app_id","category","subcategory","risk","tags","technology","mid_session","1","1415171952","fw","G1/1","","accept","tcp","10.10.20.3","19079","10.10.14.211","1521","","","","","","00-19-B9-3D-DB-41","00-1A-A0-A9-EA-B9","","","","","","","","","1",""

空格分隔符:
a b "cc d" "s ccc" dddd cccccs

阅读 1.5k
1 个回答
str.match(new RegExp(`"[^"]+"|[^${split}]+`, 'g'))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题