正则表达式匹配每月的前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结合使用