如何用JS验证文本框中输入的字符串是否是日期(yyyy-mm-dd)格式?

解决方案 »

  1.   

    function ChkData(str)
    {
    //if (str.length==8) 
    //{
    // str=str.substr(0,4) + '-' + str.substr(4,2) + '-' + str.substr(6,2);
    // //alert(str);
    //}
    var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
    if(r==null) return false; 
    var d= new Date(r[1], r[3]-1, r[4]); 
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
    }
      

  2.   

    function isValidDate(dateStr) {
    var datePat = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; // requires 4 digit yearvar matchArray = dateStr.match(datePat); // is the format ok?
    if (matchArray == null) {
    //alert("Date is not in a valid format.")
    return false;
    }
    month = isMonthName(matchArray[3]); // parse date into variables
    day = matchArray[1];
    year = matchArray[4];
    //alert(day+" "+month+" "+year);
    if (month < 1 || month > 12) { // check month range
    alert("月份必须在1到12之间。\nMonth must be between 1 and 12.");
    return false;
    }
    if (day < 1 || day > 31) {
    alert("日必须在1到31之间。\nDay must be between 1 and 31.");
    return false;
    }
    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    alert(month+"没有31天!\nMonth "+month+" doesn't have 31 days!")
    return false;
    }
    if (month == 2) { // check for february 29th
    var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day>29 || (day==29 && !isleap)) {
    alert("February " + year + " doesn't have " + day + " days!");
    return false;
       }
    }
    return true;
    }