我正在制作一个计划应用程序(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" ]
以获得有效的正则表达式。)
谢谢!
答案 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之间的数字开头,所以整个正则表达式都是正确的。