Javascript 正则表达式在捕获括号时忽略括号

Javascript 正则表达式在捕获括号时忽略括号,javascript,regex,Javascript,Regex,我正在用javascript解析一个文件&必须捕获一些值。例如,速度值如下所示。例如: > "velocity(22)".match("\\(([^()]*)\\)"); [ '(22)', '22', index: 8, input: 'velocity(22)' ] 上面的工作正常,22在匹配[1]中被捕获。问题是当这些值有论文中提到的单位时。例如: > "velocity(22 (m/s))".match("\\(([^()]*)\\)"); [ '(m/s)', 'm/s'

我正在用javascript解析一个文件&必须捕获一些值。例如,速度值如下所示。例如:

> "velocity(22)".match("\\(([^()]*)\\)");
[ '(22)', '22', index: 8, input: 'velocity(22)' ]
上面的工作正常,
22
在匹配[1]中被捕获。问题是当这些值有论文中提到的单位时。例如:

> "velocity(22 (m/s))".match("\\(([^()]*)\\)");
[ '(m/s)', 'm/s', index: 12, input: 'velocity(22 (m/s))' ]
如上所示,捕获的是
m/s
,而不是
22(m/s)

在括号内捕获时,忽略括号的正确方法是什么?

尝试以下方法:

const num=“速度(43)”;
常数单位=“速度(22(m/s))”;
常量正则表达式=/\(((\d+)(:\(.+)\)?)/
log(num.match(regex));

console.log(units.match(regex))尝试使您的模式更具体一些,例如,在需要正则表达式的地方也不要使用字符串,额外的转义字符只会增加更多的混乱,实际上速度较慢,因为运行时必须从字符串重新编译
RegExp
console.log('velocity(22(m/s))。match(/\(?:[^)(]+\124;\([^)([^)(]*\))*)\)/)[1]);