式を検証するために正規表現を使用しています(Excelのような)。これらの数式には、文字列 (引用符の間)、セル参照 (C[] プレースホルダー --> C[A4] で示される)、または整数値を含めることができます。それらは「&」文字で連結されます。有効な数式の例を次に示します。
- =C[A4]+C[B4]
- ="これはテキストで、この整数値のように好きなものを入力できます: "&123456789
- ="開始"&(C[A4]+C[A3])/2&123&"終了"
これは私が使用している正規表現です:
^-?(\d+)|(C\[[A-Z][0-9]\])([-\+\*\/][\(]*-?((\d+)|(C\[[A-Z][0-9]\]))[\)]*)*$
今までは、やるべきことをやってきた。また、数式として検証できない入力を引用符で囲むオートコレクトもあります。だから入ったら
=200X-8
「=」の後のコンテンツを引用符で囲む必要があります。しかし、これは起こりません。私の regex.IsMatch は成功しているようですが、正規表現によると X を許可していません。「200」に一致するようで、それ以上はありません。奇妙なことに、入力全体を検証するように指示していることです (正規表現の末尾にある "$" を参照してください)。
何か不足していますか (正規表現は正しいと思います)、完全な入力と一致しない場合に regex.Ismatch を「成功」させたくありません。