C# 验证.NET时间格式的正则表达式
背景 我需要在一些字段中验证用户输入,这些字段定义了如何在某些视图中显示时间 要求 时间格式必须以Microsoft.NET方式表示(如果您想了解有关框架的日期和时间格式的更多信息,请参阅此MSDN库文章:) 请记住,我希望验证的是格式,而不是实际的时间字符串 例如,用户可以输入:C# 验证.NET时间格式的正则表达式,c#,javascript,.net,regex,vb.net,C#,Javascript,.net,Regex,Vb.net,背景 我需要在一些字段中验证用户输入,这些字段定义了如何在某些视图中显示时间 要求 时间格式必须以Microsoft.NET方式表示(如果您想了解有关框架的日期和时间格式的更多信息,请参阅此MSDN库文章:) 请记住,我希望验证的是格式,而不是实际的时间字符串 例如,用户可以输入: 嗯 嗯 党卫军 hh:ss mm:ss 。。。等等 事实上,它应该从可用的最短到最长时间格式进行验证 另一点是,我需要在客户端使用JavaScript进行操作。换句话说,任何给定的正则表达式都应该在浏览器Java
- 嗯
- 嗯
- 党卫军
- hh:ss
- mm:ss
- 。。。等等
我不能使用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:如果只是时间,那就更容易了。我真的认为你需要把它们一一列举出来。我相信你是对的。总比什么都没有好,或者更多:实现这一结果的最佳方式。非常感谢。