如何解析dd.mm.yyyy格式的RegularExpressionAttribute MVC的DataAnnotations?

时间:2012-06-01 07:35:16

标签: c# regex asp.net-mvc model-view-controller data-annotations

我想像这样创建DateTimeAttribute:


   public class DateTimeAttribute : RegularExpressionAttribute
    {
        public DateTimeAttribute(): base(@"\d\d.\d\d.\d\d\d\d")
        {

        }

    }

我想制作我的格式:dd.mm.yyyy它太简单但是: ^((((0 [1-9] | [12] \ d | 3 [01]).- / .- /)|((0 [1-9] | [12] \ d | 30) .- / .- /)|((0 [1-9] |≤1\ d | 2 [0-8])?[.- /] 0 2 .- /)|(29 [.- /] 0 ?2 .- /))|(((0 [1-9] | [12] \ d | 3 [01])(0 [13578] | 1 [02])((1 [6-9] | [ ?2-9] \ d)\ d {2}))|((0 [1-9] | [12] \ d | 30)(0 [13456789] | 1 [012])((1 [6- 9] | [2-9] \ d)\ d {2}))|((0 [1-9] | 1 \ d | 2 [0-8])02((1 [6-9] | [2-9] \ d)\ d {2}))|?(2902((1 [6-9] | [2-9] \ d)(0 [48] | [2468] [048] | [13579] [26])|((16 | [2468] [048] | [3579] [26])00)| 00))))$

太难了也不行吗?如何在我的正则表达式中解析dd.mm.yyyy?

2 个答案:

答案 0 :(得分:1)

尝试:

(0[1-9]|[12][0-9]|3[01])[\.](0[1-9]|1[012])[\.](19|20)[0-9]{2}

但这与2月31日的无效日期相符。因此,您无论如何都需要检查日期的有效性。

答案 1 :(得分:1)

你能使用内置属性吗?

[DataType(DataType.Date, ErrorMessage="Please enter a valid date in the format dd.mm.yyyy")]