我正在寻找一个正则表达式,仅当日期在该月的前 28 天时才匹配。这是我在 ASP.NET 中的验证器控件
Brian
问问题
1143 次
5 回答
18
不要对正则表达式执行此操作。不同国家/地区的日期格式不同。请改用 DateTime.TryParse 例程:
DateTime parsedDate;
if ( DateTime.TryParse( dateString, out parsedDate) && parsedDate.Day <= 28 )
{
// logic goes here.
}
正则表达式几乎是输入验证的金锤,但在这种情况下,它是错误的选择。
于 2008-09-08T15:26:56.147 回答
2
我认为这不是非常适合正则表达式的任务。
我会尝试使用库函数(.NET 的 DateTime.Parse)来解析日期,然后检查它的日期部分。无论如何,其他一切都在复制一半的库函数。
于 2008-09-08T15:19:08.617 回答
1
为什么不将其转换为日期数据类型并检查日期?使用正则表达式虽然可以做到,但只会使其过于复杂。
于 2008-09-08T15:19:29.363 回答
1
([1-9]|1\d|2[0-8]) // matches 1 to 28 but woudn't allow leading zeros for single digits
(0?[1-9]|1\d|2[0-8]) // matches 1 to 28 and would allow 01, 02,... 09
(其中 \d 匹配任何数字,如果您的正则表达式引擎不支持,请使用 [0-9]。)
于 2008-09-08T15:31:14.560 回答
1
我会将 DateTime.TryParse 技术之一与CustomValidator结合使用
于 2008-09-08T15:57:11.193 回答