JavaScript如何将含数学运算的字符串转换为可计算的数值结果
JavaScript 运算字符串转计算结果实现方案
以下是不同适用场景的可行实现方案:
- 方案1:
eval()快速实现(仅适用于完全可信的运算场景)
如果运算字符串为内部生成、无用户输入风险,可以直接用该方法,代码最简单:
注意:绝对不要在有用户输入的场景下直接使用该方案,会存在代码注入安全风险。const calcStr = "34.5 + 30"; const res = eval(calcStr); console.log(res); // 输出 64.5 console.log(typeof res); // 输出 number,为标准浮点数值类型 - 方案2:
Function构造函数实现
安全性略高于eval,但仍仅推荐用于可信输入场景:const calcStr = "34.5 + 30"; const res = new Function(`return ${calcStr}`)(); console.log(res); // 输出 64.5 - 方案3:安全计算实现(支持不可信用户输入场景)
先对运算字符串做合法性校验,过滤所有非运算相关字符,避免注入风险:function calcExpression(str) { // 校验规则:仅允许数字、小数点、加减乘除、括号、空格 const legalCharReg = /^[\d\s+\-*/().]+$/; if (!legalCharReg.test(str)) { throw new Error("表达式包含非法字符"); } try { return new Function(`return ${str}`)(); } catch (err) { throw new Error("表达式格式错误,请检查后重试"); } } // 测试调用 const result = calcExpression("34.5 + 30"); console.log(result); // 输出 64.5
内容的提问来源于stack exchange,提问作者Hevin Siaton Ebarle
相关产品推荐
相关产品推荐

