我正在寻找一个正则表达式,以便仅在日期在该月的前28天内匹配。这是我在ASP.NET中的验证器控件
答案 0 :(得分:18)
请勿使用Regex执行此操作。日期在不同国家/地区的格式不同。改为使用DateTime.TryParse例程:
DateTime parsedDate;
if ( DateTime.TryParse( dateString, out parsedDate) && parsedDate.Day <= 28 )
{
// logic goes here.
}
Regex几乎是输入验证的golden hammer,但在这种情况下,它是错误的选择。
答案 1 :(得分:2)
我认为这不是一个非常适合正则表达式的任务。
我尝试使用库函数(DateTime.Parse for .NET)来解析日期,然后检查它的日期组件。无论如何,其他所有东西都重复了库函数的一半。
答案 2 :(得分:1)
为什么不将它转换为日期数据类型并检查当天?使用正则表达式,虽然它可以完成,但只是使它过于复杂。
答案 3 :(得分: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]。)
另见问题What is the regex pattern for datetime (2008-09-01 12:35:45 ) ?
答案 4 :(得分:1)
我会将DateTime.TryParse技术之一与CustomValidator
结合使用