在JavaScript/angularjs中验证信用卡到期日期的正则表达式?

t9aqgxwy  于 2023-08-02  发布在  Angular
关注(0)|答案(1)|浏览(126)

我有一个文本字段,当我在该文本字段中输入信用卡到期日期(mm/yy)时,我用JavaScript验证日期。我尝试了以下正则表达式:

var s = "11/12";                                                        
/^(0[1-9]|1[0-2])\/\d{2}$/.test(s);

字符串
在上面的表达式中,月份验证有效,但它需要00,12,17作为年份。如何验证年份?

zzlelutf

zzlelutf1#

如果你想追求正确性,如果你使用JavaScript的Date API,你可以做一个更正确的日期验证。例如:

function validateExpiry (input) {
  // ensure basic format is correct
  if (input.match(/^((0[1-9]|1[0-2])\/\d{2})$/)) {
    const {0: month, 1: year} = input.split("/");

    // get midnight of first day of the next month
    const expiry = new Date("20" + year, month);
    const current = new Date();
    
    return expiry.getTime() > current.getTime();
    
  } else return false;
}

console.log("01/32", validateExpiry("01/32"));
console.log("01/19", validateExpiry("04/18"));
console.log("05/18", validateExpiry("05/18"));
console.log("05.18", validateExpiry("05.18"));
console.log("00/23", validateExpiry("00/23"));
console.log("invalid", validateExpiry("invalid"));

字符串

相关问题