C# 验证.NET时间格式的正则表达式

C# 验证.NET时间格式的正则表达式,c#,javascript,.net,regex,vb.net,C#,Javascript,.net,Regex,Vb.net,背景 我需要在一些字段中验证用户输入,这些字段定义了如何在某些视图中显示时间 要求 时间格式必须以Microsoft.NET方式表示(如果您想了解有关框架的日期和时间格式的更多信息,请参阅此MSDN库文章:) 请记住,我希望验证的是格式,而不是实际的时间字符串 例如,用户可以输入: 嗯 嗯 党卫军 hh:ss mm:ss 。。。等等 事实上,它应该从可用的最短到最长时间格式进行验证 另一点是,我需要在客户端使用JavaScript进行操作。换句话说,任何给定的正则表达式都应该在浏览器Java

背景

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

要求

时间格式必须以Microsoft.NET方式表示(如果您想了解有关框架的日期和时间格式的更多信息,请参阅此MSDN库文章:)

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

例如,用户可以输入:

  • 党卫军
  • hh:ss
  • mm:ss
  • 。。。等等
事实上,它应该从可用的最短到最长时间格式进行验证

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

我会欣赏任何自我泰勒式的,任何链接或粘贴的表达

先谢谢你

注意(更新)


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

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

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

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

“e”也是一种有效的格式(它将属于“字符被复制到结果字符串中未更改。”大小写)


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

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

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

您可以将区分月份的
M
和分钟的
M
区分为区分大小写,将小时的
[hH]
区分为区分大小写,然后将
[:-/]
设置为允许使用不同的分隔符和许多其他类似的内容。但主要思想是简单地枚举所有由
分隔的选项,在
之间只使用少量正则表达式语法

只是一个小的澄清,但你只想验证正确吗?输出是一个布尔值?您可以发布您尝试过的内容吗?这不是一个要求解决问题并期望人们为你解决问题的地方。HH:mm HH:mm HH:ss mm:ss这些都是
2digits:2digits
,不太可能与regex区分开来。除了时间格式hh:ss没有太大意义…我想你使用的是asp.net?因此,您可以使用RegularExpressionValidatorcontrol@bw_他说他只是想验证一种格式。i、 e.用户输入
hh:mm
mm:ss
时,他们将返回true,但据我所知,如果用户输入
ss:hh
则返回false。我相信这最好在问题的评论中讨论。顺便说一句,阅读它们,因为我已经回答了其他人同样的想法。是的,这是我解决这个问题的第一个想法,但我想知道是否有其他方法可以解决这个问题。顺便说一句,这只是时间格式,我不需要日期时间格式。@Matías Fidemraizer:如果只是时间,那就更容易了。我真的认为你需要把它们一一列举出来。我相信你是对的。总比什么都没有好,或者更多:实现这一结果的最佳方式。非常感谢。