繁体   English   中英

如何使用 Javascript 或 ReactJs 验证信用卡到期日期?

[英]How to validate credit card expiry date using Javascript or ReactJs?

在反应中,我使用正则表达式进行月份验证,最初我只允许使用正则表达式的两个数字在一个月和一年内都可以正常工作,并且能够验证从 01 到 12 的月份,但是现在坚持如何验证到期日期是 06/22 我只需要允许 07/22.how 中的数字来实现这一点。 下面是我的代码:

for allowing only 2 nos: 
setInput({ ...input, [e.target.name]: e.target.value.replace(/\D/g, "").slice(0, 2) });

为了允许 1 到 12 个以下代码,使用 onblur:

 let cardMonth = /^0[1-9]|1[0-2]/.test(e.target.value);
        if (cardMonth === true) {
          setInput({ ...input, [e.target.name]: e.target.value.replace(/\D/g, "").slice(0, 2) });
          setErrors({ ...errors, cardmonth: false });
        } else {
          setErrors({ ...errors, cardmonth: true });
        }

有两个输入字段的月份和年份。

试试这个模式,我在我的应用程序中使用过,它非常有帮助:

function datePatten(e) {
    var code = e.keyCode;
    var allowedKeys = [8];
    if (allowedKeys.indexOf(code) !== -1) {
      return;
    }

    e.target.value = e.target.value
      .replace(
        /^([1-9]\/|[2-9])$/g,
        "0$1/" // 3 > 03/
      )
      .replace(
        /^(0[1-9]|1[0-2])$/g,
        "$1/" // 11 > 11/
      )
      .replace(
        /^([0-1])([3-9])$/g,
        "0$1/$2" // 13 > 01/3
      )
      .replace(
        /^(0?[1-9]|1[0-2])([0-9]{2})$/g,
        "$1/$2" // 141 > 01/41
      )
      .replace(
        /^([0]+)\/|[0]+$/g,
        "0" // 0/ > 0 and 00 > 0
      )
      .replace(
        /[^\d\/]|^[\/]*$/g,
        "" // To allow only digits and `/`
      )
      .replace(
        /\/\//g,
        "/" // Prevent entering more than 1 `/`
      );
  }

暂无
暂无

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

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