【发布时间】:2021-06-12 18:10:21
【问题描述】:
我对正则表达式很熟悉,但发现以下问题很难解决。
我正在尝试用未嵌套在 ""、''、[] 或 () 中的逗号拆分(CSS 选择器)字符串(使用正则表达式)。
我成功地做到了这一点,但只使用了其中一个符号 ["" 或 '' 或 ()],但没有将它们全部放在一起。例如,我使用以下正则表达式作为引号:
(,)(?=(?:[^"]|"[^"]*")*$)
在逗号下带有标记的输入示例:
#id.class:contains("text with ,") , #id2[attr="value,"]:contains(,) , [attr='value,']
^ ^
这应该拆分为:
#id.class:contains("text with ,")#id2[attr="value,"]:contains(,)[attr='value,']
有可能吗?
【问题讨论】:
-
我最初的方法是
[...input.matchAll(/(\(.*?\)|\[.*?\]|[^,])+/g)].map(m => m[0])不过不确定引号。引号可以在 CSS 选择器中转义,从而使事情变得更加复杂。
标签: javascript regex split regex-lookarounds