【解決方法】入力した数式が有効かどうかを検証するにはどうすればよいですか?


次のような要件があります。

ユーザーは、テキスト ボックスから数式 (A + B を想定) を追加できます。数式はデータベース テーブルに数式として保存され、後でこの数式に従って他の値を計算し、適切な通貨で結果として計算値を取得できます。変換。

ユーザーが有効な数式を入力した場合は問題ありません。 しかし、ユーザーが無効な入力 (A + * B と仮定) を保存しようとすると、「これは有効な数式などではありません…」というポップアップをユーザーに表示したいと考えています。

では、入力した数式を検証するにはどうすればよいでしょうか?

解決策 1

これに必要なものが含まれているかどうかはわかりませんが、試してみる価値があります。

Math.js[^]

JavaScript および Node.js 用の広範な数学ライブラリ

Math.js は、JavaScript および Node.js 用の広範な数学ライブラリです。 柔軟な式パーサーを備えており、数値、大数、複素数、単位、および行列を操作するための統合解決策を提供します。 パワフルで使いやすい。

特徴

数値、大数値、分数、複素数、単位、文字列、配列、行列をサポートします。
JavaScript の組み込み Math ライブラリと互換性があります。
柔軟な式パーサーが含まれています。
連鎖操作をサポートします。
組み込み関数と定数の大規模なセットが付属しています。
依存関係はありません。 任意の JavaScript エンジンで実行されます。
簡単に拡張可能です。
オープンソース。

解決策 2

君たちありがとう、
を通り抜けたとき、 Math.js[^].
アイデアが頭に浮かび、このような問題を解決しました。

C#
var isDataValid = false;
calculationFormula = calculationFormula.Formula;
<pre>calculationFormula = calculationFormula.replace(/[A-Za-z]/g, "1"); //" ----1 "
      try {
             var expression = eval(calculationFormula); //" ----2 "
             if (isNaN(expression)) {
             addErrorState(formulaTextArea, "Please enter correct formula."); //" ----3 "
             isDataValid = false;
             }
          }
       
          catch (e) { //" ----4 "
          addErrorState(formulaTextArea, "Please enter correct formula."); //" ----3 "
          isDataValid = false;
        }
//" 

1) すべてのアルファベットを数値 1 に置き換えます。
2) jquery eval() で評価する
3) ユーザーにエラーを表示します。
4) 試行が失敗した場合は、エラーをキャッチしてユーザーに表示します
isDataValid = フラグとして使用。
addErrorState() = 特定の formulaTextArea にエラーを表示するために使用するメソッド。

提案してください、これは正しいアプローチですか。

コメント

タイトルとURLをコピーしました