gpt4 book ai didi

javascript - 匹配逗号分隔列表中未被单引号或双引号括起来的项目

转载 作者:数据小太阳 更新时间:2023-10-29 05:21:57 24 4
gpt4 key购买 nike

我想匹配逗号分隔列表中的任何文本实例。为此,以下正则表达式非常有用:

/[^,]+/g

(Regex101 demo)。

问题是我想忽略包含在单引号或双引号中的任何逗号,而且我不确定如何扩展上述选择器以允许我这样做。

这是一个示例字符串:

abcd, efgh, ij"k,l", mnop, 'q,rs't

我想匹配五个文本 block 匹配四个相关的逗号(这样我就可以使用 split() 而不是 匹配():

  1. abcd
  2. efgh
  3. ij"k,l"
  4. mnop
  5. 'q,rs'

或者:

abcd, efgh, ij"k,l", mnop, 'q,rs't
^ ^ ^ ^

我该怎么做?


存在三个相关问题,但它们都不能同时满足 JavaScript 中的 '":

  1. Regex for splitting a string using space when not surrounded by single or double quotes - Java 解决方案,似乎不适用于 JavaScript。
  2. A regex to match a comma that isn't surrounded by quotes - 仅匹配 "
  3. Alternative to regex: match all instances not inside quotes - 仅匹配 "

最佳答案

好的,所以您的匹配组可以包含:

  • 只是字母
  • 一对匹配的“
  • 一对匹配的'

所以这应该可行:

/((?:[^,"']+|"[^"]*"|'[^']*')+)/g

RegEx101 Demo

作为一个不错的奖励,您可以在双引号内放置额外的单引号,反之亦然。但是,您可能需要一个状态机来在双引号字符串中添加转义双引号(例如“aa\”aa”)。

不幸的是它也匹配初始空间 - 你必须 trim 匹配。

关于javascript - 匹配逗号分隔列表中未被单引号或双引号括起来的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35989851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com