【发布时间】:2012-11-14 07:29:46
【问题描述】:
我编写这段代码是为了在 asp.net 中验证时间 *
如果我使用 "[0-9]?[0-9]+:[0-9]+[0-9]+:[0-9]+[0-9]+" 会出现什么错误对于 hh:mm:ss 格式。它适用于所有情况吗?
【问题讨论】:
-
它并非在所有情况下都有效,您缺少文化信息。如果您知道日期/时间始终处于相同的文化中,它将起作用。
我编写这段代码是为了在 asp.net 中验证时间 *
如果我使用 "[0-9]?[0-9]+:[0-9]+[0-9]+:[0-9]+[0-9]+" 会出现什么错误对于 hh:mm:ss 格式。它适用于所有情况吗?
【问题讨论】:
您可以使用TimeSpan.TryParse 而不是正则表达式来解析字符串,看看您是否得到true 或false
TimeSpan tempTimeSpan;
if (TimeSpan.TryParse("12:22:33", out tempTimeSpan))
{
//valid time
}
else
{
//Invalid time
}
【讨论】:
TimeSpan.TryParseExact与格式。
下面的正则表达式代码 sn-p 可能有助于验证日期和时间。这也照顾闰年。
^(?=\d)(?:(?:31(?!.(?:0?[2469]|11))|(?:30|29)(?!.0?2)|29(? =.0?2.(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][ 26])|(?:(?:16|[2468][048]|[3579][26])00)))(?:\x20|$))|(?:2[0-8]| 1\d|0?[1-9]))([-./])(?:1[012]|0?[1-9])\1(?:1[6-9]|[2 -9]\d)?\d\d(?:(?=\x20\d)\x20|$))?(((0?[1-9]|1[012])(:[0- 5]\d){0,2}(\x20[AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2}) ?$【讨论】: