2015-16学年的javascript验证

时间:2016-04-05 10:28:50

标签: javascript

我想为学年提供javascript验证,例如(2015-16)。我需要验证,比如前4后的数字' - '这两位数后必须填写。我为此尝试了Regex,但我没有重复错误。 这是我试过的。

/^[2-9]{4}+[-]+[1-9]{2}$/i

3 个答案:

答案 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"))

fiddle

答案 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;
}

本来可以更短,但我确实很清楚,确保它很清楚。