JavaScript中的复杂正则表达式

Ild*_*dar 5 javascript regex

我有这个任务:将字符串中的所有数字相加并执行乘法运算

input: "3 chairs, 2 tables, 2*3 forks"
result: 11

我已经有正则表达式来执行此操作:

eval(str.match(/(\d[\d\.\*]*)/g).join(' + '))
Run Code Online (Sandbox Code Playgroud)

但我想添加选项来忽略括号内的数字"()"

input: "2 chairs, 3 tables (1 broke)"
result: 5

怎么做?

正则表达式对我来说总是很痛苦:(

bob*_*mcr 5

一种简单的方法是执行第一次传递并删除所有带括号的表达式.

str = str.replace(/\([^\)]*\)/g, "");
// now run your original algorithm to sum/multiply...
// ...
Run Code Online (Sandbox Code Playgroud)

这不是超级高效,但它可以完成这项工作.

我应该注意,这不会处理嵌套的括号,但这似乎不是必需的.