我想允许用户在文本输入中执行简单的计算,因此键入2*5将导致10.我将使用空字符串替换除数字之外的所有内容,然后使用eval()进行计算.这看起来更容易,并且可能比手动解析更快.
经常有人说eval()是不安全的,所以我想听听在这种情况下使用它有任何危险或缺点.
function (input) {
value = input.value.replace(/[^-\d/*+.]/g, '');
input.value=eval(value);
}
Run Code Online (Sandbox Code Playgroud)
这是安全的,不是因为你正在消毒它,而是因为它全部由用户输入并在他们自己的浏览器中运行.如果他们真的想输入恶意代码,他们无论如何都可以通过使用firebug或web检查器,甚至使用bookmarklet来实现.值得庆幸的是,除了锁定自己的浏览器之外,你没有太多可以使用javascript进行恶意攻击:)