正则表达式范围从1-24可选的小数部分

时间:2018-01-30 09:42:59

标签: regex range

我需要一个允许1到24之间的值的正则表达式。

我尝试了下面的一个及其值29。任何人都可以帮助这个正确的正则表达式格式吗?

^([1-9](\.\d+)?|[12]\d|2[0-4](\.0+)?)$

1 个答案:

答案 0 :(得分:2)

在您的模式中,[12]\d匹配29,因为\d可以匹配任何数字,09。此外,[12]\d替代方法不允许匹配小数部分,2[0-4](\.0+)?只允许020的数字的小数部分(预计只有零)对于23值。)

使用

24

请参阅regex demo

模式详情

  • ^(?:(?:2[0-3]|1\d|[1-9])(?:\.\d+)?|24(?:\.0+)?)$ - 字符串开头
  • ^ - 一个非捕获组,可容纳2个替代方案:
    • (?: - (?:2[0-3]|1\d|[1-9])(?:\.\d+)?202122(与23匹配)或2[0-3]至{ {1}}(与10匹配)或191\d1),可选地跟随9和任意1位数(分数)部分)
    • [1-9] - 或
    • . - |可选地跟随24(?:\.0+)?和一个或多个零
  • 24 - 非捕获组的结束
  • . - 字符串结束。