用于验证.NET时间格式的正则表达式

A regular expression to validate .NET time format

本文关键字:正则表达式 格式 时间 验证 NET 用于      更新时间:2023-09-26

背景

我需要验证某些字段中的用户输入,这些字段定义了如何在某些视图中显示时间。

要求

时间格式必须以Microsoft.NET方式表示(如果您想了解有关框架的日期和时间格式的更多信息,请查看MSDN Library的这篇文章:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx)

请记住,我希望验证格式,而不是实际的时间字符串。

例如,用户可以输入:

  • HH:mm
  • hh:mm
  • ss
  • hh:ss
  • 毫米:ss
  • 。。。等等

事实上,它应该从可用的最短到最长时间格式进行验证。

另一点是我需要在客户端使用JavaScript。换句话说,任何给定的正则表达式都应该在浏览器JavaScript正则表达式引擎中工作。

我会欣赏任何一个自我保留的,任何链接或粘贴的表情!

提前谢谢。

注释(更新(

我不能使用ASP.NET验证引擎或任何其他引擎。由于项目的要求,我需要避免这种情况

据我所知,没有太多选择——最多20个。为什么不在一个没有太多特殊符号的大型正则表达式中枚举它们呢?像

'hh:mm|hh:mm:ss|yyyy-MM-dd hh:mm|<etc>'

您可以区分大小写,区分月份的M和分钟的m,区分小时的[hH],然后在那里设置[:-/],允许使用不同的分隔符和许多其他类似的东西。但其主要思想是简单地枚举由|分隔的所有选项,在||之间只需少量的regex语法。

您对"有效"格式字符串的定义是什么?只有知道了这一点,才能验证格式字符串。

"K"也是一个有效的格式字符串

"zz"也是一个有效的格式字符串

"e"也是一种有效的格式(它属于"字符被复制到结果字符串不变"的情况(

我甚至不确定什么格式会真正导致.NET.ToString((抛出异常(如果这是您试图避免的(。