Regex 正则表达式范围为1-24,可选小数部分
我需要一个正则表达式,它允许值从1到24 我已经尝试了下面的一个及其取值,直到Regex 正则表达式范围为1-24,可选小数部分,regex,range,Regex,Range,我需要一个正则表达式,它允许值从1到24 我已经尝试了下面的一个及其取值,直到29。有人能帮我找到正确的正则表达式格式吗 ^([1-9](\.\d+)?|[12]\d|2[0-4](\.0+)?)$ 在您的模式中,[12]\d匹配29,因为\d可以匹配任何数字,0到9。此外,[12]\d备选方案不允许匹配小数部分,2[0-4](\.0+)将只允许0小数部分用于20到23之间的数字(对于24值,只需要零) 使用 见 图案细节 ^-字符串的开头 (?:-一个非捕获组,可容纳2个备选方案: (?
29
。有人能帮我找到正确的正则表达式格式吗
^([1-9](\.\d+)?|[12]\d|2[0-4](\.0+)?)$
在您的模式中,
[12]\d
匹配29
,因为\d
可以匹配任何数字,0
到9
。此外,[12]\d
备选方案不允许匹配小数部分,2[0-4](\.0+)
将只允许0
小数部分用于20
到23
之间的数字(对于24
值,只需要零)
使用
见
图案细节
-字符串的开头^
-一个非捕获组,可容纳2个备选方案:(?:
-要么(?:2[0-3]| 1\d |[1-9])(?:\.\d+)
,20
,21
,22
(与23
匹配)要么2[0-3]
到10
(与19
匹配)要么1\d
到1
可选择后跟9
和任何1+位(小数部分)
-或|
-24(?:\.0+)
可选后跟24
和一个或多个零
-非捕获组结束)
-字符串结束$
[12]\d
将29
匹配为\d
=[0-9]
,但如果我将其删除,则它将不接受11-19。仅删除2
,请尝试。这绝对不是regex
的作业。这是可以做到的,但还有更好的办法。例如,编写一个regex
,它匹配1位和2位数字以及可选的小数部分(\b\d\d?(\.\d*)?\b
或\b\d{1,2}(\.\d*)?\b
),使用它标识输入字符串中的数字,然后使用您使用的语言提供的数字比较运算符验证找到的数字是否小于或等于29
。
^(?:(?:2[0-3]|1\d|[1-9])(?:\.\d+)?|24(?:\.0+)?)$