正则表达式获得带有括号的所需输出

问题描述 投票:0回答:1

“对此对象的性能非常满意(评论 30、2、1)”

期望的输出:['(评论 30, 2, 1)', 30, 2, 1]

“对此对象的性能非常满意(评论 30)”

期望的输出:['(评论 30)', 30]

我正在尝试使用正则表达式获得高于所需的输出,但我无法获得所需的结果。

  1. 我想获取括号内的字符串以及括号内的所有数字。

  2. 我想从字符串中删除括号并获取剩余的字符串。

期望的输出:“对此对象的性能非常满意”

console.log("So happy with the performance of this object (Review 30, 2, 1)".match(/\((.*?)\)/)[0].match(/([([0-9]+)\)/));

javascript regex
1个回答
0
投票

如果您想在单个匹配操作中获取输出,请使用:

const arr = ['(Review 30, 2, 1)',
           '(Review 50)'];
const re= /(?<=\(Review\s+(?:\d+,\s*)*)\d+(?=(?:,\s*\d+)*\))/g;

arr.forEach( el => {
  var res = [el];
  [...el.matchAll(re)].forEach(m => res.push(m[0]))
  console.log(res);
});

输出:

["(Review 30, 2, 1)", "30", "2", "1"]
["(Review 50)", "50"]

正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.