本帖最后由 SCAUSCNU 于 2013-05-12 20:42:31 编辑

解决方案 »

  1.   


    <script type="text/javascript">
    var str='2012/12/31';
    var k=/^(\d{4})\/([\d]+)\/([\d]+)$/
    var reg = str.match(/^(\d{4})\/([\d]+)\/([\d]+)$/);  
    if(!k.test(str) || reg[2]>12 || reg[3]>31){
    alert("格式不正确!");
    }else{
    alert(true);
    }
    </script>
      

  2.   


    function isDate(str)
    {
    if(!/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/.test(str))
    return false;
    var year = RegExp.$1-0;
    var month = RegExp.$2-1;
    var date = RegExp.$3-0;
    var obj = new Date(year,month,date);
    return !!(obj.getFullYear()==year && obj.getMonth()==month && obj.getDate()==date);
    }
    alert("2012/1/1 "+isDate("2012/1/1"));
    alert("2012/12/31 "+isDate("2012/12/31"));
    alert("2012/99/99 "+isDate("2012/99/99"));
    alert("2012/11/31 "+isDate("2012/11/31"));
    alert("2012/2/29 "+isDate("2012/2/29"));
    alert("2013/2/29 "+isDate("2013/2/29"));
      

  3.   

    是不是有一种try.catch的办法,不用正则表达式的?
      

  4.   

    请问有没有一种datetime.parse(string),像c#那样不用正则表达式的,有异常就说明不是时间格式
      

  5.   

    javascript的Date对象比较“灵活”。它可以把无效日期自动转换成有效日期,不会触发错误的
      

  6.   

        var da = new Date('2012/01/01');
        var time = da.getTime();
        isNaN(time)
      

  7.   

    回复于: 2013-05-13 11:18:14
    Date.parse('2012/01/01')
      

  8.   

    可以啊,你有没有试过?function isDate(str)
    {
    if(!/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/.test(str))
    return false;
    var year = RegExp.$1-0;
    var month = RegExp.$2-1;
    var date = RegExp.$3-0;
    var obj = new Date(year,month,date);
    return !!(obj.getFullYear()==year && obj.getMonth()==month && obj.getDate()==date);
    }
    alert("2012/6/31 "+isDate("2012/6/31"));
      

  9.   

    时间正则表达式太麻烦了,你的那个好像2012-6-31这种错误日期就判断不出来
    用正则只是判断日期格式是否正确,之后还要用Date对象判断是不是有效日期