正则表达式匹配该月的前28天

时间:2008-09-08 15:17:22

标签: asp.net regex

我正在寻找一个正则表达式,以便仅在日期在该月的前28天内匹配。这是我在ASP.NET中的验证器控件

5 个答案:

答案 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

结合使用