【问题标题】:.NET Regular expression for time 24 hr format.NET 24 小时格式的正则表达式
【发布时间】:2009-09-01 06:18:47
【问题描述】:

我能否在 .NET 中有一个正则表达式,它只允许文本框中的 24 小时时间格式。

谢谢。

最好的问候, 女士

【问题讨论】:

    标签: vb.net regex


    【解决方案1】:

    正则表达式:时间 hh:mm 验证 24 小时格式:

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

    如果你也需要秒:

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

    编辑: 为防止 AM/PM 出现尾随,不允许部分匹配,否则您必须将表达式放在 ^ 和 $ 之间。

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

    【讨论】:

    • @Manoj:24 小时制的重点不是省略上午/下午吗?
    • @Fredrik @eed3si9n,我认为 Manoj 可能会说这允许 AM/PM 并且不应该。它需要锚来避免这种情况。即目前它将匹配 23:15 AM
    • @Ash 我明白了。如果是这种情况,我会像其他人建议的那样将表达式放在 ^ 和 $ 之间。
    【解决方案2】:

    试试这个

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

    24 小时制,可选秒数。 (Source)

    【讨论】:

      【解决方案3】:

      根据您使用的是 WPF 还是 Winforms,如何使用 DatePickerDateTimePicker?无论如何,这可能是一个更好的 UE。

      【讨论】:

      • 我阅读了您的链接,但无法完全理解。我可以有使用 vb.net 的代码示例吗?如何在我的 vb.net 代码中使用它。谢谢!
      • 只是谷歌周围。我相信你可以找到一些例子。基本上,我想说的是,如果您真的希望用户输入日期/时间信息,您可能应该使用其中一个预构建的日期控件。
      【解决方案4】:

      试试

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

      【讨论】:

        【解决方案5】:

        就个人而言,我不会使用验证路径,而是使用日期时间选择器之类的控件,原因如下:

        • 需要零验证。实际上,您要做的唯一验证是业务规则验证,例如订单日期不能晚于今天等
        • 对用户来说更容易——您不必告诉用户以 24 小时格式输入时间
        【解决方案6】:

        我建议你下次需要正则表达式时看看The Regulator,它是设计表达式的好工具。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多