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

时间:2020-03-05 18:49:24  来源:igfitidea点击:

我正在寻找仅当日期在每月的前28天时才匹配的正则表达式。这是我在ASP.NET中的验证程序控件

解决方案

回答

我认为这不是非常适合正则表达式的任务。

我会尝试使用库函数(.NET的DateTime.Parse)来解析日期,然后检查其日期部分。无论如何,其他所有东西都在复制一半的库函数。

回答

为什么不只将其转换为日期数据类型并检查日期呢?尽管可以使用正则表达式,但会使它过于复杂。

回答

不要使用正则表达式执行此操作。日期在不同国家/地区的格式不同。请改用DateTime.TryParse例程:

DateTime parsedDate;

if ( DateTime.TryParse( dateString, out parsedDate) && parsedDate.Day <= 28 )
{
 // logic goes here.
}

正则表达式几乎是输入验证的金锤,但是在这种情况下,这是错误的选择。

回答

([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]。)

另请参阅问题datetime(2008-09-01 12:35:45)的正则表达式模式是什么?

回答

我将使用DateTime.TryParse技术之一与CustomValidator结合使用