使用正则表达式进行HTML时间输入验证(不允许00:00,但希望允许24:00)

时间:2018-03-14 10:41:31

标签: html regex angular validation

对于输入类型为 hh:mm 格式验证的时间, 试过以下模式

pattern="^([01]\d|2[0-3]):([0-5]\d)$"

要求需要限制 00:00 并允许 24:00 , 如此更新的模式

pattern="^(24:00)|(([01]\d|2[0-3]):([0-5]\d))$"

现在允许24:00,请帮助如何限制00:00格式,

链接(示例代码): https://www.w3schools.com/code/tryit.asp?filename=FPCIVB1OCQ04

6 个答案:

答案 0 :(得分:4)

这个正则表达式应该有效:

^(?!00:00)(24:00|([0-1]\d|2[0-3]):[0-5]\d)$

<强>解释

enter image description here

Demo - 更新^ 2

您可以在此link

中详细了解正则表达式negative lookahead

答案 1 :(得分:1)

试试这个:

^(24:00)|((0[1-9]|1\d|2[0-3]):([0-5]\d))|(00:(0[1-9]|[1-5][0-9]))$

Demo

它有00小时的额外处理,只允许非零分钟。

答案 2 :(得分:1)

试试这个^(24:00)|((0[1-9]|1\d|2[0-3]):([0-5]\d))|(00:(0[1-5]|[1-9]0|[1-5][1-9]))$

<!DOCTYPE html>
<html>
<body>

<p>Takes 00:01 to 24:00, we need to restrict 00:00</p>

<form action="#">
  Input: <input type="text" name="time_input" pattern="^(24:00)|((0[1-9]|1\d|2[0-3]):([0-5]\d))|(00:(0[1-5]|[1-9]0|[1-5][1-9]))$" title="Invalid input">

  <input type="submit">
</form>

</body>
</html>

答案 3 :(得分:0)

请尝试"^(20|21|22|23|[01]d|d)(([:][0-5]d){1,2})$"

按照建议编辑

"^(24:00)|((0[1-9]|1\d|2[0-3]):([0-5]\d))|(00:(0[1-9]|[1-5]\d))$"

这应该可以正常工作

答案 4 :(得分:0)

首先,^属性不需要$pattern个锚点。它们会自动应用against input string

  

检查控件值的正则表达式。该   pattern必须与整个值匹配,而不仅仅是某个子集。

其次,你只需要在你的正则表达式前面添加一个负面的预测就可以在00:00上立即失败:

pattern="(?!00:00)(?:(?:[01]\d|2[0-3]):[0-5]\d|24:00)"

答案 5 :(得分:-2)

我认为这可能对你有所帮助

 (?!00)[0-2][0-4]:[0-5][0-9]