Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式范围为1-24,可选小数部分_Regex_Range - Fatal编程技术网

Regex 正则表达式范围为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个备选方案: (?

我需要一个正则表达式,它允许值从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个备选方案:
    • (?: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+)?)$