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