我想为学年提供javascript验证,例如(2015-16)。我需要验证,比如前4后的数字' - '这两位数后必须填写。我为此尝试了Regex,但我没有重复错误。 这是我试过的。
/^[2-9]{4}+[-]+[1-9]{2}$/i
答案 0 :(得分:1)
您应该使用Date
对象来验证日期时间字符串。
var date = new Date('2015-16');
var year = date.getFullYear();
if (year && year > 2000) {
alert('Valid academic year');
} else {
alert('Invalid academic year');
}

答案 1 :(得分:0)
你们都应该测试正则表达式和年份兼容
var regex = /^2\d{3}-[1-9]{2}$/;
var year = "2011-12";
var years = year.split("-").map(function(el){
return parseInt(el)
})
alert(years[0]>=years[1] + 2000);
alert(regex.test("2011-12"))
答案 2 :(得分:0)
如果你想要真正的验证(即你不能做2016-99
之类的事情),正则表达式是不够的。
function isAcademicYear(input) {
// Split the input, and convert both sides to numbers
const [first, second] = input.split('-').map(Number);
const firstIsValid = first >= 2000 && first <= 9999;
// Second is valid if it's larger than the last 2 digits of first
// The reason we use ... % 100 twice is for the case of 2099-00
const secondIsValid = second === (first % 100 + 1) % 100;
return firstIsValid && secondIsValid;
}
本来可以更短,但我确实很清楚,确保它很清楚。