小数点とコンマを含む数値を許可するテキストボックスに金額を入力する必要があります。これの正規表現は何ですか?
以下を使用しました
txtInitialAmountGuarDetails.ValidationSettings.RegularExpression.ValidationExpression
= @"^[-+]?\d*[0-9](|.\d*[0-9])(|,\d*[0-9])?$";
しかし、300,000,000,000,000 のような大きな数では機能しません。
それを少しずつ構築します。米国のロケールを考えると、これらのルールを持つ番号は次のようになります。
^
[+-]?
\d{1,3}
(?:,\d{3})*
(?:[.]\d+)?
$
小数点以下の桁数に制限はありますか? 次に、最後のプラス記号を2}
2 桁の { に変更します。
したがって、正規表現は次のとおりです。
@"^[+-]?\d{1,3}(?:,\d{3})*(?:[.]\d+)?$"
または、自分の作業を説明したい場合は、x
オプションと次を使用します。
@"(?x) # Extended format.
^[+-]? # Optional sign.
\d{1,3} # Initial 1-3 digits.
(?:,\d{3})* # Any number of commas followed by 3 digits.
(?:[.]\d+)?$" # An optional decimal point followed by any number of digits.
しかし、C# には既にロケール依存のバリデーターがありますか?
この正規表現も試すことができます:
^([+-]?\d{1,3}(?:,\d{1,3})*(?:\.\d+)*)$
.
正規表現エンジンでは特定の意味があるため、エスケープする必要があることに注意してください。
また、このタスクには正規表現を使用せず、代わりにmasked textboxを確認することをお勧めします。
私はそれを実行していませんが、試してみることができます。
var regexp =/^\s*?([\d\,]+(\.\d{1,2})?|\.\d{1,2})\s*$/;
これは機能します:\d{1,3}(,\d{3})*\.{0,1}(\d{3},)*\d{0,3}
カンマ以降の問題に関しては、どの選択でも問題ありません。コンマを使用すると、私の正規表現が機能します。5桁の場合、スペースは末尾を(\d{5}\s{1})*\d{0,5}
. もちろん、小数点の後に区切り記号を使用しない場合は、\d*
これを試してください:
^([0-9]{3}[,.]|)+[0-9]{0,3}$
機能強化が必要かどうか教えてください...