重複の可能性:
Javascript での算術式の安全な評価
私が取り組んでいるウェブサイトの一部として、オンライン計算機を構築しようとしています。
私は+ - * / ( ) AVG MIN MAX sine cos etc
操作として持っています。数字、演算子、関数のボタンがあります。どんなボタンが押されても文字列を追加するだけです。
UI 側で基本的な構文チェッカーを作成する必要があります。サーバーは実際に操作を実行し、それらを保存して表示します。クライアント側のコードを書くのにあまり時間をかけたくありませんが、数学的に意味があることを確認するために検証することが目的です。
これが私の計画です:
生成された文字列を試してeval()
、エラーをキャッチします。エラーが synatxError の場合、文字列が構文的に間違っていることを意味します。他のタイプのエラーであれば、問題ありません。
だから私はスクリプトの冒頭でこれをしました:
Error.prototype.dummy_attribute = "notSyntaxError"
SyntaxError.prototype.dummy_attribute = "SyntaxError"
2()
文字列リンクがあると型エラーが発生するため、上記の方法はうまく機能しません。ここで、空の括弧と括弧の前に演算子がないか、または括弧の後に演算子がないかをチェックするコードを作成する必要があります
または、数学的に意味があるかどうかを確認する必要がある文字列の構文をチェックするために使用できる代替方法はありますか。