2016-03-04 59 views
0

我有一些麻烦,即到期月份和年份验证几个字段的在我的模型信用卡。使用正则表达式来验证信用卡的月和年

我需要一个月的模式显然是:

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。

谁能帮我这个,因为它是推动我坚果。

+0

我只想把它们保存为一个字符串,并分析它们,当我需要的值。领先的零将永远不会被保存。 –

+0

就像我说过的,我并不是很在意前面的零是否存在。我更关心它没有正确验证当传递的值是完全有效的。我也不想从模型中删除验证,因为这是应该完成的。 – jezzipin

回答

1

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

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

这将为01,02,03工作... 12

1-12使用

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

这将工作for 1,2 ..

&从01-99年开始

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

我已经测试了这些人,http://regexhero.net/tester/一个不幸的是,最后一位为多年​​不工作 – jezzipin

+0

什么是你的测试字符串? – user2148124

+0

序列中的所有数字。我实际上已经找到了我自己的想法:[0-9] {1,2} – jezzipin