繁体   English   中英

JavaScript信用卡有效期验证

[英]Javascript credit card expiry date validation

我目前正在使用javascript验证来验证用户输入的有效日期,但是,我当前的正则表达式模式无法验证用户输入的日期必须小于03/19。 相反,它允许01/19以及02/19等。

我相信还有其他方法可以在javascript中进行此验证,但是我想知道此正则表达式是否有方法。

当前的javascript:

var errdiv = $(".error");
  $("#form").validate({
    rules: {
      cardmm: {
        required: true,
        minlength: 2,
        maxlength: 2,
        pattern: "^(1[0-2]|[0-9]|)$"
      },
      cardyy: {
        required: true,
        minlength: 2,
        maxlength: 2,
          pattern: "^(2[0-8]|19|)$"
      },
    },
    messages: {
      cardmm: {
        required: "Please enter valid details.",
        minlength: "Please enter valid details.",
        maxlength: "Please enter valid details.",
        max: "Please enter valid details.",
        pattern: "Please enter valid details."
      },
      cardyy: {
        required: "Please enter valid details.",
        minlength: "Please enter valid details.",
        maxlength: "Please enter valid details.",
        pattern: "Please enter valid details."
      },
    },
    errorPlacement: function(error, element, m) {
      errdiv.css({"display": "block"});
      errdiv.empty();
      errdiv.text(error[0].innerHTML);
    },
    success: function(error) {
        error.removeClass("error");  // <- no, no, no!!
        errdiv.css({"display": "none"});
    }
  });

您可以将问题分为两部分:年份大于2019的任意日期的正则表达式,以及要允许2019年的特定月份的正则表达式,然后将它们合并为最终的正则表达式。

您总是可以调用一个小脚本,该脚本结合了表单的mm和yy字段来进行整体验证。

用正斜杠连接字段。

验证正则表达式为:

^(?:(?:0?[3-9]|1[0-2])/19|(?:0?[1-9]|1[0-2])/2[0-8])$

扩展

 ^ 
 (?:
      (?: 0? [3-9] | 1 [0-2] )
      /19
   |  
      (?: 0? [1-9] | 1 [0-2] )
      /2 [0-8] 
 )
 $ 

否则,它确实无法单独验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM