使用正则表达式评估字符串中的 `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
以防您不需要结果为整数
我正尝试在这样的字符串中计算一个函数 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
以防您不需要结果为整数