我需要一个允许1到24之间的值的正则表达式。
我尝试了下面的一个及其值29
。任何人都可以帮助这个正确的正则表达式格式吗?
^([1-9](\.\d+)?|[12]\d|2[0-4](\.0+)?)$
答案 0 :(得分:2)
在您的模式中,[12]\d
匹配29
,因为\d
可以匹配任何数字,0
到9
。此外,[12]\d
替代方法不允许匹配小数部分,2[0-4](\.0+)?
只允许0
到20
的数字的小数部分(预计只有零)对于23
值。)
使用
24
请参阅regex demo
模式详情
^(?:(?:2[0-3]|1\d|[1-9])(?:\.\d+)?|24(?:\.0+)?)$
- 字符串开头^
- 一个非捕获组,可容纳2个替代方案:
(?:
- (?:2[0-3]|1\d|[1-9])(?:\.\d+)?
,20
,21
,22
(与23
匹配)或2[0-3]
至{ {1}}(与10
匹配)或19
到1\d
(1
),可选地跟随9
和任意1位数(分数)部分)[1-9]
- 或.
- |
可选地跟随24(?:\.0+)?
和一个或多个零24
- 非捕获组的结束.
- 字符串结束。