/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/;
需要限制用户输入日期格式 入 2006-12-06当然现在不能用日历控件必须手工输入我在网上找了上面得代码 可是输入20061206时也可以 想问一下年月日之间得"-"怎么判断啊 对正则表达式不太了解谢谢

解决方案 »

  1.   

    <script language=javascript>
    execScript('n = isdate("2006-07-08")','vbscript');
    alert(n);
    </script>
      

  2.   

    function IsDate(str)
    {
    var r = str.match(/\d{1,4}/g); 
    if(r==null||r.length!=3)return false; 
    var d= new Date(r[0], r[1]-1, r[2]); 
    return (d.getFullYear()==r[0]&&(d.getMonth()+1)==r[1]&&d.getDate()==r[2]);
    }
    alert(IsDate("2004年-2月-29日"))
      

  3.   

    梅花血的<script language=javascript>
    String.prototype.isDate = function()
    {
       var r = this.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]);
    }
    alert("2002-01-31".isDate());
    alert("2002-01-41".isDate());
    </script>
      

  4.   

    改成这个
    ^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))-((((0?[13578])|(1[02]))-((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$
    就OK了 :)