В научном пакете, работающем над 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)
.Есть ли способ пропустить эту проблему?
Если это невозможно, я буду искать вызов "replace", который создает строку 1+Math.sin(3*x)
из 1+sin(3*x)
.