編集:正規表現が必要な特定の状況では、これを試してください:
^(?!0)(30(\.0{1,2})?|[12]?\d(\.\d{1,2})?)$
壊す:
^ ... $
- 正規表現が文字列の最初と最後で開始および終了することを確認します。
(?!0)
- 0 から始まらないようにするための否定先読み
(30(\.0{1,2})?
- オプションで 30 に続いて .0 または .00
|
または...
[12]?
1または2の十の位のみ
\d
オプションではない単位の 1 桁
(\.\d{1,2})?
オプションの .digit または .digitdigit
残念ながら、この正規表現は、任意の範囲の数値に適合するように簡単に調整することはできません。(このような正規表現を自動的に吐き出すプログラムを作成するのは興味深いプロジェクトです。)
それ以外の場合は、次のように言います。車輪を再発明しないでください。
double result;
if (double.TryParse(inputstring, out result))
{
if (result >= 1.0 & result <= 30.0)
{
return true;
}
}
return false;
小数点以下 2 桁ではなく、それが必要な場合は、Round(result, 2)
そのように計算できます。