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

在这些示例中,变量被转换为浮点数,以便正确比较字符串和整数,然后将浮点数与 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
^(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 回答
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 回答