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

寻找与0-24匹配的jquery正则表达式模式,允许小数,jquery,regex,Jquery,Regex,我正在设置一个表单字段,允许用户输入任务的小时数。我希望字段允许在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.

我正在设置一个表单字段,允许用户输入任务的小时数。我希望字段允许在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.9999999”这样的愚蠢数字


是的,在这个例子中,正则表达式是首选的方法。不是函数。

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

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

有一个非常整洁的站点,名为regex101(),我有时在制作regex时使用它

我把这个放在一起可能对你有用

^\d(\.\d?\d?)?$|^(?=1)1\d(\.\d?\d?)?$|^(?=2)2[0-3](\.\d?\d?)?$|^24$
有4个备选案例,每个案例都需要与^and完全匹配$

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

  • 为什么最后一个捕获组中除了“24”之外还有其他内容?只是好奇。为了能够匹配
    24.00
    。如果这不是有效的输入,那么只需从末尾删除
    (?:\.00?
    。您的模式完全按照要求执行,并且比我原来的模式短。优雅的我喜欢它。事实上,我在编写模式时使用了regex101来测试我的模式。:)也就是说,“24.99”作为“通过”而不是“失败”通过正则表达式。啊,说得好。我会调整它,看看我是否能解释(\.\d{1,2})${124^([1]\d{1,2})${1,2}(\.\d{1,2})${124^([2][0-3](\.\d{1,2})${24$起作用。我完全忘记了把每一组作为自己的字符串来开始和结束。你的回答完全让我想起了这一点!:)