2016-03-04 35 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