function checkdate(datestr){
var reg = /^(\d{1,4})-(\d{1,2})-(\d{1,2})$/; 
var r = datestr.match(reg); 
if(r==null)return false; 
var d= new Date(r[1], --r[2],r[3]); 
var year = d.getFullYear();
if(r[1]<100)
year = year - 1900;
if(year!=r[1])return false;
if(d.getMonth()!=r[2])return false;
if(d.getDate()!=r[3])return false;
return true;
}
返回true则为日期,否则返回false

解决方案 »

  1.   

    <form method=post action="" name="form1">
    <input type="text" name="keyWord" onchange="vbscript:msgbox(isdate(document.form1.keyWord.value))">
    </form>
      

  2.   


    IsDate 函数  语言参考 
    版本 1  
      描述
    返回 Boolean 值指明某表达式是否可以转换为日期。
    语法
    IsDate(expression)
    expression 参数可以是任意可被识别为日期和时间的日期表达式或字符串表达式。说明
    如果表达式是日期或可合法地转化为有效日期,则 IsDate 函数返回 True;否则函数返回 False。在 Microsoft Windows 操作系统中,有效的日期范围公元 100 年 1 月 1 日到公元 9999 年 12 月 31 日;合法的日期范围随操作系统不同而不同。
    下面的示例利用 IsDate 函数决定表达式是否能转换为日期型: Dim MyDate, YourDate, NoDate, MyCheck
    MyDate = "October 19, 1962": YourDate = #10/19/62#: NoDate = "Hello"
    MyCheck = IsDate(MyDate)            ' 返回 True。
    MyCheck = IsDate(YourDate)          ' 返回 True。
    MyCheck = IsDate(NoDate)            ' 返回 False。
      

  3.   

    function IsDate(DateString , Dilimeter)
    {
    if (DateString==null) return false;
    if (Dilimeter=='' || Dilimeter==null)
    Dilimeter = '-';
    var tempy='';
    var tempm='';
    var tempd='';
    var tempArray;
    if (DateString.length<8 && DateString.length>10)
    return false; 
    tempArray = DateString.split(Dilimeter);
    if (tempArray.length!=3)
    return false;
    if (tempArray[0].length==4)
    {
    tempy = tempArray[0];
    tempd = tempArray[2];
    }
    else
    {
    tempy = tempArray[2];
    tempd = tempArray[1];
    }
    tempm = tempArray[1];
    var tDateString = tempy + '/'+tempm + '/'+tempd+' 8:0:0';//&frac14;&Oacute;°&Euml;&ETH;&iexcl;&Ecirc;±&Ecirc;&Ccedil;&Ograve;ò&Icirc;&ordf;&Icirc;&Ograve;&Atilde;&Ccedil;&acute;&brvbar;&Oacute;&Uacute;&para;&laquo;°&Euml;&Ccedil;&oslash;
    var tempDate = new Date(tDateString);
    if (isNaN(tempDate))
    return false;
    if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd)))
    {
    return true;
    }
    else
    {
    return false;
    }
    }