【问题标题】:Javascript credit card expiry date validationJavascript信用卡到期日期验证
【发布时间】:2023-03-18 08:30:01
【问题描述】:

我目前正在使用 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"});
    }
  });

【问题讨论】:

  • 请添加一些输入和预期输出
  • 这些字段是相互连接的。你不能像这样验证它。您必须创建一个自定义验证器来检查这两个字段。

标签: javascript regex


【解决方案1】:

您可以将问题分为两部分:一个正则表达式用于年份大于 2019 年的任何日期,另一个用于您希望 2019 年允许的特定月份,然后将它们组合成您的最终正则表达式。

【讨论】:

    【解决方案2】:

    您总是可以调用一个结合了 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] 
     )
     $ 
    

    否则真的无法单独验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-16
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多