Javascript 如何解析1-24的十进制正则表达式以及0到23之间的精度为2的正则表达式

Javascript 如何解析1-24的十进制正则表达式以及0到23之间的精度为2的正则表达式,javascript,regex,Javascript,Regex,^([1-9]| 1[0-9]| 2[0-3])?\b([1-9]| 1[0-9]| 2[0-3])\b(\.\d\d?)|([1-9]| 1[0-9]| 2[0-3])?\b([1-9]| 1[0-9]| 2[0-3])\b(\.\d?)(2[0-4$ 我想做从1到24的所有事情,如果精度在0到23之间,我想做任何精度为2的事情 我似乎无法排除以下类型: 0.5 0.2 接受: 一,, 2. 3. 4. 5. 6. 7. 8. 9, 10, 11, 12, 13, 14, 15, 16, 17

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

我想做从1到24的所有事情,如果精度在0到23之间,我想做任何精度为2的事情

我似乎无法排除以下类型:

0.5
0.2

接受:

一,, 2. 3. 4. 5. 6. 7. 8. 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 二十四

2.22,2.01

2.1

失败

0.5,0.9,25,25.01,24.01,24.89

编辑


我需要在JS中支持这一点。

您可以使用此正则表达式匹配从
1
24
的任何内容,最多允许2个可选小数点:

/^((?:[1-9]|1[0-9]|2[0-3])(?:\.[0-9]{1,2})?|24)$/gm

或者不使用锚,您可以使用:

/(?:^|[^.])\b((?:[1-9]|1[0-9]|2[0-3])(?:\.[0-9]{1,2})?|24)\b(?!\.\d+)/g

您也可以使用此正则表达式:

\b([2][0-3]|[1][0-9]|(


请参阅。

这适用于所有测试用例:

(((?<=^)|(?<=\s))([13-9]|1[0-9]|2[0-4])|(?<=\D)2(\.[0-9]{1,2})?)(?=[^\d.]|$)

(?您能给出几个匹配(和不匹配)的示例吗?正则表达式不是验证十进制范围的正确工具。@TimBiegeleisen补充道。@alfasin有什么更好的方法来解决这个问题?检查它是否是一个介于1-24之间的数字,并在点后使用格式/舍入到两位数字。这仍然有我的问题,不包括10-24。下一次编辑会解决我的问题,但不会解决我的数字问题ss大于1。我正在测试它,它没有10,20,仍然有0.5。你没有像上面的演示链接中看到的那样正确测试它。它匹配
10
,不匹配
0.5
。你确定你用
gm
标志从上面复制了最新的正则表达式吗?是的,我使用的是JS测试仪,因为它用于Javascript。这是另一个版本n我可以分享:那么,在JS中,只有一个正则表达式是不可能一步完成的。你要么需要使用
([2][0-3][1][0-9][1-9]|(?:\b)[1-9]\b | 24(?)(?:\.[0-9]{1,2})
,然后用
^0(\.[0-9]+)$
正则表达式重新检查输出,或者将所有数字分开,然后根据anubhava的建议逐个测试。