正常表达工作时间(例如8a12p)

时间:2017-06-14 18:53:40

标签: javascript regex

我正在制作一个计划应用程序(JS),它既需要验证输入,也要获取输入的各个部分。一些示例有效输入:

  • 8a12p(上午8点至中午12点)
  • 6a6p(早上6点至下午6点)

我的正则表达式字符串目前是^[1-9]|1[0-2][a|p][1-9]|1[0-2][a|p]$,但它似乎并不适用于所有情况(例如8a12x仍然有效),并且这些部分似乎不会分裂正确地在JS中。 (我需要能够获得各个部分(例如[ "8", "a", "12", "p" ]以获得有效的正则表达式。)

谢谢!

1 个答案:

答案 0 :(得分:4)

您的问题是您没有使用正确的括号。

这有效:^([1-9]|1[0-2])(a|p)([1-9]|1[0-2])(a|p)$

建立正则表达式https://regex101.com/

的推荐网站

您的解释

你的正则表达式^[1-9]|1[0-2][a|p][1-9]|1[0-2][a|p]$寻找

^[1-9]1[0-2][a|p][1-9][1|p]$,因为第一个适用于您的示例(因为它以1到9之间的数字开头,所以整个正则表达式都是正确的。