Javascript 捕获逗号分隔值文本中的逗号

Javascript 捕获逗号分隔值文本中的逗号,javascript,regex,Javascript,Regex,我有一个用逗号分隔的值列表,如下所示: b指令=真,任务ARME=假,bActionReinit=假,sNatureData=“Sur 种源d'ALIS ou SGP-Lignes BJ,IJ ou GMO”,sCodeMsgExpliControle=“MSG-G00033\u P\u ALIM\u ME” 我想捕获参数和值,所以我做了以下正则表达式: (?:([^=]*))="?([^,]*)(?:"|,)? 但是,由于它在大多数情况下都有效,因此对于提供的示例,他没有这样做,因为sNat

我有一个用逗号分隔的值列表,如下所示:

b指令=真,任务ARME=假,bActionReinit=假,sNatureData=“Sur 种源d'ALIS ou SGP-Lignes BJ,IJ ou GMO”,sCodeMsgExpliControle=“MSG-G00033\u P\u ALIM\u ME”

我想捕获参数和值,所以我做了以下正则表达式:

(?:([^=]*))="?([^,]*)(?:"|,)?
但是,由于它在大多数情况下都有效,因此对于提供的示例,他没有这样做,因为sNatureData后面的文本包含逗号。因此,正则表达式认为它是一对{{参数=值}的结尾,并引发一个错误。

可以做些什么?
提前感谢。

我建议您按照评论中给出的建议操作,不要使用正则表达式

但是,如果确实需要使用regex执行此操作,则应使用以下方法:

(.*?)=("?)([^"]+?)\2(?:,|$)
  • (.*?=
    捕获
    =
    符号左侧的键。它只捕获一个键,因为
    使其匹配尽可能少的字符
  • (“?)
    捕获值是否在引号中
  • ([^“]+?)\2(?:,|$)
    • ([^“]+?)
      捕获的字符不超过1个,但尽可能少
    • \2(?:,|$)
      如果有引号并再次找到,或者在下一个逗号处,或者字符串已完成,则此操作将停止

我想你可能会考虑在这里使用解析器。逗号内容被正确引用,让我们知道引号内的内容不应被视为分隔符。也许您可以为我们提供这些键/值的显示位置的更大上下文?当然,我需要捕获这些内容以在表中插入数据,并在表中插入(参数)值(值),您可能希望查看以下内容:谢谢您的回答,虽然我感到惊讶的是,不存在任何类型的正则表达式来捕获带有quotesto条件的文本,但我认为这不是完全相同的问题。这是非常相似的,但我不认为这保证了一个重复关闭。此外,对于这个用户遇到的非常简单的问题,大多数答案都过于复杂。老实说,我对regex几乎是新手,到目前为止我一直在搜索\2。非常感谢您的回答,祝您愉快。@v01dv01d非常欢迎您!