首页 > 解决方案 > 使用正则表达式提取字符后的所有组

问题描述

目标是从具有以下格式的字符串中提取所有键/值对:

(&(foo=bar)(goo=car))或者(|(foo=bar)(goo=car)(hoo=dar))

我不知道有多少组,可能是 2 个,可能是 50 个。

我需要提取运算符(& 或 |)和单个参数。

我尝试了以下正则表达式,但它忽略了第一组:

([|&])((\(.*?=.*?\)))+

我怎样才能得到所有的组?

我的尝试

编辑

我想我可以通过应用 2 个正则表达式来让它工作

\(([|&])(.*)\)

这将只提取内容

(foo=bar)(goo=car)

这将提取内容

\((.*?)\)

foo=bar, goo=car

标签: javascriptregexstring

解决方案


let match = null;
const regex = /(\([^&|]+?=.+?)\)/g;
while (match = regex.exec('(&(foo=bar)(goo=car))')) {
  console.log(match[0]);
}


推荐阅读