我想修改现有的正则表达式,它接受从0到99.99的小数
\d{0,2}(\.\d{1,2})?$
我希望这是接受
100
100.0
100.00
并且不接受
100.1
100.02
101
任何人都可以帮我修改上面的RE
答案 0 :(得分:5)
我想最好使用|
将100的测试添加为特殊情况:
^(\d{0,2}(\.\d{1,2})?|100(\.00?)?)$
答案 1 :(得分:5)
您已经有了使用正则表达式执行此操作的答案,但通常更有效地将其作为与边界条件的浮点比较来处理。例如,使用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与零和100的边界条件进行比较。它快速,易于编写,并且(最重要的是) 易于阅读。
您的里程可能会有所不同。
答案 2 :(得分:0)
100(\.0{1,2})?$|\d{0,2}(\.\d{1,2})?$
答案 3 :(得分:0)
(100(\.[0]{1,2})?|[0-9]{1,2}(\.[0-9]{1,2})?)
答案 4 :(得分: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 所有这些都用逗号。
答案 5 :(得分: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