使用正则表达式评估字符串中的 `resin(x)` 函数

evaluate `resin(x)` function in string with regular expression

我正尝试在这样的字符串中计算一个函数 resin(8)

所以如果我有这段文字 3*(resin(4)-sin(12))

我需要评估 resin(1) 所以它将替换 while 出现的结果应该看起来像 392.9

我正在使用这个

result = result.replace(/(?<={resin\()(.*?)(?=\)})/, x => parseInt(392.9 * x))

但我需要它来替换 resin( 部分和 ) 右括号。​​

有没有我可以使用的正则表达式魔法?

您确定需要正面回顾和正面回顾吗?

在我看来,当像您一样使用正则表达式替换器时,分组足以完成任务:

result = result.replace(/resin\((\d+\.?\d*)\)/g, (_, x) => parseInt(392.9 * parseFloat(x)))

编辑: 我刚刚在您的问题中读到您需要将 resin(1) 替换为 392.9,但在您的代码片段中您使用了 parseInt,我将其保留在我的示例中。只需删除 parseInt 以防您不需要结果为整数