1

入力の検証に失敗する正規表現を取得しました。

私の正規表現:\d{1,5}([\.,]\d{0,2})?

.またはのいずれかのセパレーターを使用して平方メートル(10進値)を検証する必要があり、セパレーターの,前に最大5桁(および少なくとも1つ)、その後に最大2桁を許可する必要があります。

したがって、次を受け入れる必要があります:
1
1,0
1.0
12345
12345,10
12345.10

しかし、
.1
12345 612345,123
では ありませ

4

2 に答える 2

1

キャプチャしているグループでは、と時間([\.,]\d{0,2})?の間に数字を表示できますが、グループ全体がエンディングごとにオプションとしてマークされます。このため、代わりに範囲を次のように設定する必要があります。02?{1,2}

\d{1,5}([\.,]\d{1,2})?

入力が具体的に数字である場合(完全な文ではない場合)、先頭^と末尾を追加することもお勧めし$ます。これにより、正規表現は文字列の最初から最後まで(それぞれ)チェックするように強制されます。最終的な正規表現は次のようになります。

^\d{1,5}([\.,]\d{1,2})?$

この正規表現を検証以外の目的で使用していて、一致した値も表示したい場合は、一致している現在のグループ(小数点以下の部分)を一致しないグループに変更(に変更)((?:てから、全体の前後に括弧を追加する必要があります。正規表現:

^(\d{1,5}(?:[\.,]\d{1,2})?)$
于 2012-10-07T22:08:27.253 に答える
1

あなたは近かった。その動作の正しい正規表現は次のようになります。

^\d{1,5}(?:[\.,]\d{0,2})?$

Regex's for .Net:Expressoをいじくり回すのに適したツール。http://www.ultrapico.com/Expresso.htm

于 2012-10-07T22:11:20.817 に答える