我有一个文本字段,当我在该文本字段中输入信用卡到期日期(mm / yy)时,我使用Javascript验证日期。我尝试了以下正则表达式:
var s = "11/12";
/^(0[1-9]|1[0-2])\/\d{2}$/.test(s);
在上面的表达式中,月份验证有效但年份需要00,12,17。我如何验证年份?
答案 0 :(得分:0)
如果您要求正确性,如果使用JavaScript的Date API,则可以进行更正确的日期验证。例如:
function validateExpiry (input) {
// ensure basic format is correct
if (input.match(/^(0\d|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/23", validateExpiry("01/23"));
console.log("01/18", validateExpiry("04/18"));
console.log("05/18", validateExpiry("05/18"));
console.log("05.18", validateExpiry("05.18"));
console.log("invalid", validateExpiry("invalid"));