正则表达式介于0和100之间,包括两位小数

时间:2016-05-24 14:13:56

标签: regex

我试图找出执行以下操作的正则表达式。以下两个条件必须为真: 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(一位小数)。 我可能非常接近。

1 个答案:

答案 0 :(得分:2)

您只需要将每个第二个十进制数字设为可选:

^(?:100(?:\.00?)?|\d?\d(?:\.\d\d?)?)$
              ^                 ^

请参阅updated regex demo0(?:\.\d\d)?替代方案由\d?\d(?:\.\d\d)?一个(根据Sebastian's comment)涵盖,因此可以删除。

?量词匹配它量化的子模式的一次或零次出现。

模式详情

  • ^ - 字符串开头
  • (?: - 替换组的开始:
    • 100(?:\.00?)? - 100100.0100.00.00是可选的,最后0也是可选的)
    • \d?\d(?:\.\d\d?)? - 一个可选数字后跟一个必填数字,后面跟一个点,一个数字和一个可选数字的可选序列。
  • ) - 交替小组结束
  • $ - 字符串结束。
相关问题