javascript - 工作时间的正则表达式(例如 8a12p)

标签 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-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/

相关文章:

javascript - 使用 jquery-validate 使用 ajax 验证表单

javascript - 从多个 promise 构造对象

regex - apache 正则表达式 和 proxypassmatch

c++ - 无法使用 Boost 正则表达式构建

javascript - 使用javascript的正则表达式删除特殊字符

javascript - $http 获取逻辑只允许 200 OK

javascript - JQGrid 格式化时显示错误的日期

java - 将文件名分成组

mysql - MySQL 中的 REGEX 查找日语匹配项

javascript - 使用 Charts.js 在 Canvas 旁边显示 Base64 图像