寻找一个jquery正则表达式模式匹配0-24,允许小数

我正在设置一个表单字段,允许用户输入任务的小时数。 我希望字段允许0到24小时,小数点后2位。

我写的初始正则表达式处理它,但强制十进制和十进制数字。

^([0-9](\.\d{1,2}))|([1]\d{1,2}(\.\d{1,2}))|([2][0-3](\.\d{1,2}))|24$ 

我尝试将十进制捕获组设置为可选:

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

但它允许愚蠢的数字,如“23.999999999”。

是的,在这种情况下,正则表达式是首选的方法。 不是function。

你可以使用这个正则表达式:

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

RegEx演示

有一个非常简洁的网站叫做regex101( https://regex101.com/#javascript ),我在制作正则表达式时有时使用它。

我把这个可能适合你的那个放在一起

 ^\d(\.\d?\d?)?$|^(?=1)1\d(\.\d?\d?)?$|^(?=2)2[0-3](\.\d?\d?)?$|^24$ 

有4个备用案例,每个案例都需要与^和$完全匹配

  1. 任意数字(0-9),可选的小数为1或2位
  2. 第一个数字是1,第二个位置(0-9)中的任何数字,带有可选的小数
  3. 第一个数字是2,第二个数字必须是0-3之一,带有可选的小数
  4. 正好24