寻找与0-24匹配的jquery正则表达式模式,允许小数
我正在设置一个表单字段,允许用户输入任务的小时数。我希望字段允许在0到24小时之间,使用2位小数 我编写的初始正则表达式处理它,但强制使用十进制和十进制数字寻找与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-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完全匹配$
为什么最后一个捕获组中除了“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$起作用。我完全忘记了把每一组作为自己的字符串来开始和结束。你的回答完全让我想起了这一点!:)