gpt4 book ai didi

javascript - 将具有 '√' 的字符串转换为可以给 eval() 的字符串;

转载 作者:行者123 更新时间:2023-12-03 03:46:12 25 4
gpt4 key购买 nike

我有一个函数,它接收类似 '5 + 10 * 4' 的字符串,然后使用 eval(string) 对其进行评估并返回结果。该代码可以工作,但我遇到了一个问题,有时字符串可能有一个 '√' 值;例如:'4 * √64 + 10'。这会导致 eval() 函数崩溃。如何将 '4 * √64 + 10' 转换为 '4 * Math.sqrt(64) + 10'

最佳答案

首先,请注意您的 eval 不允许执行任意的、未经净化的 JavaScript。 XSS 攻击可能非常恶劣。

其次,使用正则表达式。

function solve(math) {
return Number(eval(math.replace(/√(\d+)/g, 'Math.sqrt($1)')));
}

console.log(solve('4 * √64 + 10'));

如果您还需要能够计算任意嵌套表达式的平方根,那么您将需要一个实际的解析器,在这种情况下,您可能应该使用一个能够评估解析的数学表达式的库,例如 math.js

关于javascript - 将具有 '√' 的字符串转换为可以给 eval() 的字符串;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45379612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com