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

Using a regular expression to validate credit card month and year

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

我要求的月份模式显然是:

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; }

日期 selection 是通过视图中的两个 select 字段创建的:

月份

01、02、03、04 等

01、02、03

然而,当它进入控制器时,它会去除前导零。我不太在意这个,因为我可以稍后处理它,但问题是即使传递的值完全有效,模型在到达 !ModelState.IsValid 检查时始终被视为无效。

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

任何人都可以帮我解决这个问题,因为它让我抓狂。

对于 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])$