【问题标题】:JavaScript Time Regex for format H:mm格式 H:mm 的 JavaScript 时间正则表达式
【发布时间】:2019-11-05 19:28:24
【问题描述】:

我有时间的正则表达式/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/

这也验证了 24 小时格式。

如果我不想接受前导零,那么正则表达式应该是什么?

例子:

9:31 不是 09:31

更新:

此问题:Regular expression for matching HH:MM time format 接受带前导零和不带前导零。但我正在寻找一个不接受前导零的 24 小时正则表达式。这不是重复的

我试过了:

^([1-9]|1[0-9]|2[0-3]):[0-5][0-9]$

但不接受 0:24

有什么想法吗?谢谢

【问题讨论】:

    标签: javascript regex time-format


    【解决方案1】:

    捕获组中的第二个交替匹配带前导零的小时:

    0[0-9]
    

    所以,只需删除它。如果需要,您还可以使用1? 代替前两个交替,使用\d 代替[0-9] 使模式更加干燥:

    ^(1?\d|2[0-3]):[0-5]\d$
    

    https://regex101.com/r/jS9TTj/1

    【讨论】:

    • 谢谢。您的第二个建议不接受 24 小时格式。我按照您的第一个建议删除了第二个改动。
    • 查看链接的 regex101,它看起来在 24 小时格式下工作得很好(只是不接受前导零,按要求):regex101.com/r/jS9TTj/1
    • 1?\d 可能更简洁,但\d|1\d 更清晰一些,便于维护。 :-)
    【解决方案2】:

    我的回答是:^([0-9]|1[0-9]|2[0-3]):[0-5][0-9]$

    我正在寻找一个不接受前导零的正则表达式

    例子:

    • 0:30
    • 9:30(不是 09:30)
    • 0:00(午夜 12 点)

    https://regex101.com/r/hcjjHN/2

    【讨论】:

    • 你的答案是哪一个?
    • 我的答案是^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$。我删除了我的第一个答案以避免混淆。谢谢
    • 它没有。我刚刚使用 Angular 中的表单验证对其进行了测试
    • 感谢您指出这一点。我再次更新了我的答案regex101.com/r/hcjjHN/2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多