【问题标题】:how to calculate numbers in a string in javascript?如何在javascript中计算字符串中的数字?
【发布时间】:2019-11-14 12:52:40
【问题描述】:

我从用户那里得到一些输入并将它们保存在 div 标签中,就像计算器一样,例如,用户输入 100-50+30 然后我将它存储在 div 标签中,当用户点击 go按钮我想给他看结果是 80。 我尝试了 parseint 和 number,因为字符串包含像 + / * 这样的运算符,这些不起作用

var a = document.querySelector(".output").innerHTML;

【问题讨论】:

  • 我认为eval 会在这里工作
  • Eval 是邪恶的...
  • @EliasSoares 一般来说我会同意,但如果 OP 的代码是 constructing 表达式,那么它并不危险;唯一真正的选择是编写自己的表达式解析器。
  • 如果你想避免潜在的代码执行,你可以使用像mathjs这样的现有库

标签: javascript string integer int parseint


【解决方案1】:

您可以简单地使用eval,但出于安全原因,我建议在评估表达式之前从用户输入中删除除数字和允许的运算符之外的所有内容:

const input = '100-50+30 [some malicious code]'

const result = eval(input.replace(/[^0-9\+\-\*\/]/g, ''));

console.log(result)

【讨论】:

  • 如果您想要更可靠的检查,例如避免潜在的错误抛出,确保格式使用/^[+-]?\d+([+/*-]\d+)*$/.test(input),如果返回false则不执行。如果你还想处理小数,它会有点复杂(并且取决于你是否想支持 .51. 作为有效数字)
【解决方案2】:

使用eval()函数

var expression = '100-50+30';
console.log(eval(expression));

eval() 函数评估表示为字符串的 JavaScript 代码。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

【讨论】:

    猜你喜欢
    • 2012-01-19
    • 2023-01-10
    • 2015-03-31
    • 2010-10-27
    • 2020-03-12
    • 2021-10-25
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多