5

0から99.99までの小数を受け入れる既存の正規表現を変更したい

\d{0,2}(\.\d{1,2})?$ 

これを受け入れてほしい

100
100.0
100.00

受け入れるべきではありません

100.1
100.02
101

誰かが上記のREを変更するのを手伝ってもらえますか

4

7 に答える 7

9

特別な場合として、次を使用して100のテストを追加するのが最善だと思います|

^(\d{0,2}(\.\d{1,2})?|100(\.00?)?)$ 
于 2012-07-07T10:34:42.593 に答える
6

代わりに浮動小数点比較を使用する

正規表現を使用してこれを行うための答えはすでにありますが、通常、これを境界条件との浮動小数点比較として処理する方が効率的です。たとえば、Rubyを使用します。

number = 99
number.to_f >= 0 and number.to_f <= 100
=> true

number = 100.01
number.to_f >= 0 and number.to_f <= 100
=> false

これらの例では、文字列と整数が適切に比較されるように変数がfloatとしてキャストされ、次にfloatが0と100の境界条件と比較されます。これは、すばやく、書き込みが簡単で、(最も重要なことですが)読み取りが簡単です。 。

あなたのマイレージは異なる場合があります。

于 2012-07-07T10:39:28.760 に答える
1

00.00から99.99まで私のために働いた

/^(?=.*\d)\d{0,2}(?:\.\d{0,2})?$/
于 2021-10-28T08:46:08.530 に答える
0
100(\.0{1,2})?$|\d{0,2}(\.\d{1,2})?$ 
于 2012-07-07T10:35:20.493 に答える
0
(100(\.[0]{1,2})?|[0-9]{1,2}(\.[0-9]{1,2})?)
于 2012-07-07T10:37:11.280 に答える
0

これはあなたに役立つと思います"^(100(.0 {0,2}?)?$ |([1-9] {0,1})([0-9] {1})((。[ 0-9] {0,2})|(\、[0-9] {0,2}))?)$ "

これは、0〜100、0.0〜100.0、0.00〜100.00、およびこれらすべてをコンマで一致させます。

于 2018-03-29T16:18:14.933 に答える
0
^(0*(\d{1,2}(\.\d+)?)|\.\d+|100(\.0+$)?)$

これは、ほとんどのプログラミング言語で有効な小数を含む0〜100のすべての値に適用されます。

valid: 0, 0.2, .1, 0001.020, 9, 010, 100.0000
invalid: -1, 100.010, 1., ., empty
于 2020-10-20T20:04:55.013 に答える