代码之家  ›  专栏  ›  技术社区  ›  jezzipin

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

  •  0
  • jezzipin  · 技术社区  · 9 年前

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

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

    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

    然而,当它进入控制器时,它会去掉前导零。我不太担心这一点,因为我可以稍后处理它,但问题是,即使传递的值完全有效,当模型到达时,它总是被视为无效!模型状态。IsValid检查。

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

    有人能帮我解决这个问题吗,因为它快把我逼疯了。

    1 回复  |  直到 9 年前
        1
  •  1
  •   user2148124    9 年前

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

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

    这适用于01、02、03…12

    1-12用

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

    这将适用于1,2。。

    &自1999年1月起

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