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



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

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

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

如果你追求正确性,如果你使用 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"));

最新更新