10 進数値のみを含む入力テキスト ボックスを検証する正規表現を作成するにはどうすればよいですか? 値には、セパレータとしてコンマを使用して、最大 3 つの小数点以下 (なしも含む) を含めることができます。
たとえば、以下の値は有効です:-
1,234 1,23 1,2 1
これらは無効です:
1,2345 (10 進数が多すぎる) A (文字は数字ではありません) (スペースまたは空の文字列) 1.234 (カンマの代わりにドットを使用)
次のようなことを試してください:
\d+(?:,\d{1,3})?
説明:-
\d+ # multiple digits
(?: # start non-capturing group
, # a comma
\d{1,3} # 1-3 digits
)? # end non-capturing group, made optional
どのように@"\d+,?\d{0,3}"
: 1 つ以上の数字、オプションのコンマ、さらに 0 ~ 3 桁。これは、カンマの前に任意の桁数を許可することを前提としています。あなたの例では、1 つしかありません。その場合は、+
.
値1,
が有効でない場合は、を?
最後に移動する必要があります。@"\d+(,\d{1,3})?"
次のようなパターンを使用できます。
[0-9]+(,[0-9]{1,3})?
小数点の前に 1 文字だけが必要な場合は、+
^\d+(,(\d?){3})?$
^ //start
\d+ //one or more decimal digits
(,(\d?){3})? //a comma, followed by up to 3 decimal digits, optionally
$ //end
受け入れられたくない場合は1,
、中間セクションを選択できます(,\d(\d?){2})?