使用正则表达式验证信用卡月份和年份

时间:2016-03-04 09:48:14

标签: c# .net model umbraco data-annotations

我在验证模型中的几个字段时遇到了一些问题,即信用卡的到期月份和年份。

本月我需要的模式显然是:

1-12

我今年所需的模式是:

0-99

我在我的模型中设置了正则表达式,如下所示:

        [UmbracoRequired("Booking.Validation.Required")]
        [UmbracoRegularExpression("Booking.Validation.CreditMonthFormat", "[1-12]")]
        public int booking_expirymonth { get; set; }

        [UmbracoRequired("Booking.Validation.Required")]
        [UmbracoRegularExpression("Booking.Validation.CreditYearFormat", "[0-99]")]
        public int booking_expiryyear { get; set; }

日期选择是通过视图中的两个选择字段进行的:

01,02,03,04等

01,02,03

然而,当它进入控制器时,它会剥离前导零。我对此并不太感到困扰,因为我可以稍后处理它,但问题是即使通过完全有效的值,模型在到达!ModelState.IsValid检查时始终被视为无效。

我查看了VS中的代码,可以看到它正在接收" 17"这一年表明它是一个字符串但是当我查看实际模型值的值时,它被视为一个int。

任何人都可以帮助我,因为它让我疯了。

1 个答案:

答案 0 :(得分:1)

对于01-12使用以下正则表达式

0[1-9]|1[0-2]    

这适用于01,02,03 ... 12

1-12使用

[2-9]|1[0-2]?

这适用于1,2 ..

&安培;多年来从01-99

^(0?[1-9]|[1-9][0-9])$