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

时间:2011-07-15 13:57:37

标签: c# javascript .net regex vb.net

背景

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

要求

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

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

例如,用户可以输入:

  • HH:MM
  • HH:MM
  • SS
  • HH:SS
  • MM:SS
  • ......等等。

事实上,它应该从最短到最长时间格式验证。

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

我会感谢任何自我感染的,任何链接或粘贴的表达!

提前谢谢。

注意(更新)

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

2 个答案:

答案 0 :(得分:1)

据我了解,没有多少选择 - 最多只有20种。为什么不在没有太多特殊符号的情况下在一个大的正则表达式中枚举它们呢?像

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

你可以区分大小写区分Mm分钟,而小时分为[hH],然后将其[:-/]放在那里你允许使用不同的分隔符和许多其他类似的东西。但主要的想法是简单地枚举由|分隔的所有选项,只需在||之间使用少量正则表达式语法。

答案 1 :(得分:0)

您对“有效”格式字符串的定义是什么?只有在您知道可以验证格式字符串时才会这样。

“K”也是有效的格式字符串

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

“e”也是一种有效的格式(它会落入“将字符复制到结果字符串不变的情况下。”的情况下)

我甚至不确定哪种格式会导致.NET .ToString()抛出异常(如果这是你要避免的)。