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的建议逐个测试。