在运行在 Node.js 上的科学包中,我需要执行用户提供的数学表达式,如“sin(2*PI*x)”。目前,它的实现类似于:
// from input: s = "1+Math.sin(2*Math.PI*x)";
...
// regexp to verify "s" doesn't contains dangerous characters as '";
...
val f = new Function( 'x', s );
...
f(12);
问题是用户必须键入Math.sin(3*x)而不是更简单的sin(3*x). 有没有办法跳过这个问题?
如果不可能,我将寻找一个“替换”调用,该调用1+Math.sin(3*x)从1+sin(3*x).
相关分类