用于验证.NET时间格式的正则表达式
A regular expression to validate .NET time format
背景
我需要验证某些字段中的用户输入,这些字段定义了如何在某些视图中显示时间。
要求
时间格式必须以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((抛出异常(如果这是您试图避免的(。
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- XXXXXX的正则表达式.XX格式的数字
- 正则表达式,用于从html格式的字符串中提取文本
- 什么将是日期格式的正则表达式'dd-M-y'
- Javascript 正则表达式日期格式 dd/mm/yy
- 正则表达式货币格式 - javascript
- 正则表达式仅用于数字,也屏蔽货币格式
- 用于数字格式的javascript正则表达式
- 用于日期格式验证的正则表达式
- 特定格式的正则表达式(javascript)
- 用于检查时间格式的 JavaScript 正则表达式
- JavaScript 中任何格式的日期正则表达式
- 使用正则表达式的JavaScript时间格式转换
- 自定义日期格式的正则表达式
- 什么是用于验证日期格式(如月/年)的正则表达式
- 包含美国运通卡号的 JavaScript 正则表达式格式字符串
- 在 JavaScript 中通过正则表达式将数字格式化为特定格式
- 12 小时时间格式的正则表达式
- jQuery 验证引擎:更改日期格式 dd-M-yy 的正则表达式
- 数据道场道具中正则表达式的格式是什么