在JavaScript中验证日期

zid*_*dar 1 javascript asp.net validation date

我需要对日期字段进行用户验证,它应该采用yyyyMMdd格式,并且将来不应超过一年.我该怎么做呢?目前我只有一个粗糙的正则表达式,这是不够的.

function VerifyDate(source, args)
{
    var regexp = /^([1-2]{1}[0-9]{1})\d{2}([0][1-9]|[1][0-2])([0][1-9]|[1-2][0-9]|[3][0-1])$/
    var result = args.Value.match(regexp);     
    if(result) {
        args.IsValid = true;
    } else {
        args.IsValid = false;
    }       
}
Run Code Online (Sandbox Code Playgroud)

Tom*_*lak 5

拿正则表达式只检查格式.你可以保持简单:

^(\d{4})(\d{2})(\d{2})$
Run Code Online (Sandbox Code Playgroud)

然后解析日期并检查范围:

function VerifyDate(source, args)
{
  args.IsValid = false;
  var regexp = /^(\d{4})(\d{2})(\d{2})$/;
  var daysInMonth = function (y, m) {return 32-new Date(y, m, 32).getDate(); };

  var ma = regexp.exec(args.Value);
  if (ma && ma.length == 4 && ma[2] < 12 && ma[3] <= daysInMonth(ma[1], ma[2]))
  {
    var diff = new Date(ma[1], ma[2], ma[3]) - new Date();
    args.IsValid = diff < 31536000000; // one year = 1000ms*60*60*24*365
  }
}
Run Code Online (Sandbox Code Playgroud)