regex HTML/Java中用于时隙输入验证的正则表达式

ohtdti5x  于 2023-04-22  发布在  Java
关注(0)|答案(2)|浏览(102)

我试图验证时隙的input字段,例如-10:00AM TO 2:30PM11AM TO 3PM等,时间应该在12小时时钟,并应通过TOto分隔。我可以在html中使用的正则表达式应该是什么?

dm7nw8vv

dm7nw8vv1#

第一关是非常具体的,时间格式也就是说,你很可能会遇到问题,与替代当地人(如英国与主要24小时时间)。
如果是基于HTML的UI,我建议只使用两个输入类型为“时间”的字段,如果是更丰富的UI框架,则使用两个时间选择器控件。
也就是说,这种模式似乎并不复杂。

  • 1到2位数字,第一位仅为0或1
  • 冒号
  • 2位数字,第一位为0到5
  • 文字“AM”或“PM”
  • 字面上的“to“或“TO“
  • 1到2位数字,第一位仅为0或1
  • 冒号
  • 2位数字,第一位为0到5
  • 文字“AM”或“PM”

为了匹配这个字符串

[10]{0,1}\d:[0-5]\d(AM|PM) (to|TO) [10]{0,1}\d:[0-5]\d(AM|PM)

这样做不够聪明,不能匹配像19:00PM to 00:59AM这样的字符串。
我假设你想在正则表达式中有捕获组,这样你就可以提取开始和结束时间了?
如果是这样的话,试试这样的

(?<starthours>[10]{0,1}\d):(?<startmins>[0-5]\d)(?<startampm>AM|PM) (to|TO) (?<endhours>[10]{0,1}\d):(?<endmins>[0-5]\d)(?<endampm>(AM|PM))
  • 请注意,所有答案都使用.NET RegEx语法,您的语言可能会有所不同!*

请使用像regex101这样的网站来帮助你自己解决这些问题。

8ehkhllq

8ehkhllq2#

尝试以下操作-regex101

^(1[0-2]|0?[1-9]):([0-5]?[0-9])(AM|PM) (to|TO) (1[0-2]|0?[1-9]):([0-5]?[0-9])(AM|PM)$

相关问题