我试图找出执行以下操作的正则表达式。以下两个条件必须为真: 1)介于0和100之间 2)只能包含一个或两个小数,但不是必须的。
不应允许100.01或100.1 100是最大值,或100.0或100.00
我试过^(100(?:\.00)?|0(?:\.\d\d)?|\d?\d(?:\.\d\d)?)$
在this question帮助了我
但这不接受99.0
(一位小数)。
我可能非常接近。
答案 0 :(得分:2)
您只需要将每个第二个十进制数字设为可选:
^(?:100(?:\.00?)?|\d?\d(?:\.\d\d?)?)$
^ ^
请参阅updated regex demo。 0(?:\.\d\d)?
替代方案由\d?\d(?:\.\d\d)?
一个(根据Sebastian's comment)涵盖,因此可以删除。
?
量词匹配它量化的子模式的一次或零次出现。
模式详情:
^
- 字符串开头(?:
- 替换组的开始:
100(?:\.00?)?
- 100
,100.0
或100.00
(.00
是可选的,最后0
也是可选的)\d?\d(?:\.\d\d?)?
- 一个可选数字后跟一个必填数字,后面跟一个点,一个数字和一个可选数字的可选序列。)
- 交替小组结束$
- 字符串结束。