我正在制作一个时间表应用程序(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-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 之间的数字开头,所以整个正则表达式都是 true。
关于javascript - 工作时间的正则表达式(例如 8a12p),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44552567/