5

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

4

5 回答 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]。)

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

于 2008-09-08T15:31:14.560 回答
1

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

于 2008-09-08T15:57:11.193 回答