<script>
var re=/\d{4}-\d{2}-\d{2}/
var a="2002-01-01"
var b="2002/01/01"
alert(re.test(a))
alert(re.test(b))
</script>

解决方案 »

  1.   

    <script language=javascript>
    function strDateTime(str){
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; 
    var r = str.match(reg); 
    if(r==null)return false; 
    var d= new Date(r[1], r[3]-1,r[4]); 
    var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
    return newStr==str
    }
    alert(strDateTime("2002-1-31"))
    alert(strDateTime("2002-1-41"))
    </script>
      

  2.   

    为什么非用正规表达式呢
    用这个不更好?!<script>
    var newDateObj = new Date("2002/02/24 12:00:22");
    if(newDateObj!=null){
    alert(newDateObj.toLocaleString());}
    </script>
    Date的
    其它方法:
    Date.prototype 的成员
    getDate 方法
    getDay 方法
    getFullYear 方法
    getHours 方法
    getMilliseconds 方法
    getMinutes 方法
    getMonth 方法
    getSeconds 方法
    getTime 方法
    getTimezoneOffset 方法
    getUTCDate 方法
    getUTCDay 方法
    getUTCFullYear 方法
    getUTCHours 方法
    getUTCMilliSeconds 方法
    getUTCMinutes 方法
    getUTCMonth 方法
    getUTCSeconds 方法
    getVarDate 方法
    getYear 方法
    setDate 方法
    setFullYear 方法
    setHours 方法
    setMilliSeconds 方法
    setMinutes 方法
    setMonth 方法
    setSeconds 方法
    setTime 方法
    setUTCDate 方法
    setUTCFullYear 方法
    setUTCHours 方法
    setUTCMilliseconds 方法
    setUTCMinutes 方法
    setUTCMonth 方法
    setUTCSeconds 方法
    setYear 方法
    toGMTString 方法
    toLocaleString 方法
    toUTCString 方法
    toString 方法
    valueOf 方法
    Date.prototype 非成员
    parse 方法
    UTC 方法
      

  3.   

    事情不像看起来那么简单,请看
    <script>
    var newDateObj = new Date("2002/02/30 12:00:22");
    if(newDateObj!=null){
    alert(newDateObj.toLocaleString());
    //显示:2002年3月2日12:00:22
    }
    </script>
    格式合法,不一定日期合法,如上例。
    建议还是写验证代码,或采用日期选取控件。
    google search for:
    javascript date validation
      

  4.   

    onestab(┼─)是对的,单纯格式合法bencalie(Bencalie)的就可以了!
    加些规则进去:
    年:1900-2050
    月:01-12
    日:01-31
      

  5.   

    <script>
    function checkDate(objdate){
    var msg;
    var info=new Array("01",31,"02",28,"03",31,"04",30,"05",31,"06",30,"07",31,"08",31,"09",30,"10",31,"11",30,"12",31)
    var theyear=objdate.substr(0,4)
    var themonth=objdate.substr(5,2)
    var thedate=objdate.substr(8,2)
    var re=/\d{4}-\d{2}-\d{2}/
    if(re.test(objdate)==true){
    if(parseInt(theyear)%4!=0){
    for(i=0;i<12;i++){
    if(themonth==info[2*i]&&parseInt(thedate)<=info[2*i+1]&&parseInt(thedate)>0){
    msg="正确日期";
    break;}
    else
    msg="非法日期";
    }
    }
    else{
    info[3]=29;
    for(j=0;j<12;j++){
    if(themonth==info[2*j]&&parseInt(thedate)<=info[2*j+1]&&parseInt(thedate)>0){
    msg="正确日期";
    break;}
    else
    msg="非法日期";
    }
    }
    }
    else
    msg="非法日期";
    alert(msg);
    }
    checkDate("2001-02-28")
    </script>
      

  6.   

    1.<script>
    var re=/\d{4}-\d{2}-\d{2}/
    alert(re.test("abc2002-01-01def"))
    </script>2.
    <script language=javascript>
    function strDateTime(str){
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; 
    var r = str.match(reg); 
    if(r==null)return false; 
    var d= new Date(r[1], r[3]-1,r[4]); 
    var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
    return newStr==str
    }
    alert(strDateTime("2000-01-01"))
    </script>
      

  7.   

    修正如下
    <script language=javascript>
    function strDateTime(str){
    var reg = /^(\d{1,4})-(\d{1,2})-(\d{1,2})$/; 
    var r = str.match(reg); 
    if(r==null)return false; 
    var d= new Date(r[1], --r[2],r[3]); 
    if(d.getFullYear()!=r[1])return false;
    if(d.getMonth()!=r[2])return false;
    if(d.getDate()!=r[3])return false;
    return true;
    }
    alert(strDateTime("2000-01-01"))
    alert(strDateTime("abc2002-01-01def"))
    alert(strDateTime("2000-02-30"))
    </script>
      

  8.   

    bencalie(Bencalie) 与 qiushuiwuhen(秋水无恨) 都对极了。   不过前者的比较易懂和通俗(闰年的问题掉了一点)
      
       而后者秋水的则是比较的难懂和简洁了。   秋水的一句:
       var d=new Date([r[1],r[2],r[3])是关健的。   不过我对这句还是不清楚,请教秋水,为什么 在用了这句之后,经比较相等于否这时再用alert(r[1])等时却显示undefined呢?而比较又通得过?这句话的具体意思 是什么 呢?秋水??
      

  9.   

    我遗漏哪里了?老实说,没有太多的验证
    这段是处理闰年的:
    else{
    info[3]=29;
    for(j=0;j<12;j++){
    if(themonth==info[2*j]&&parseInt(thedate)<=info[2*j+1]&&parseInt(thedate)>0){
    msg="正确日期";
    break;}
    else
    msg="非法日期";
    }
    }
      

  10.   

    to bencalie(Bencalie) :checkDate("1900-02-29")to coolhealth(漫漫追求):可以呀,没有undefined
    <script language=javascript>
    function strDateTime(str){
    var reg = /^(\d{1,4})-(\d{1,2})-(\d{1,2})$/; 
    var r = str.match(reg); 
    if(r==null)return false; 
    var d= new Date(r[1], --r[2],r[3]); 
    if(d.getFullYear()!=r[1])return false;
    alert(r[1])
    if(d.getMonth()!=r[2])return false;
    if(d.getDate()!=r[3])return false;
    return true;
    }
    alert(strDateTime("2000-01-01"))
    alert(strDateTime("abc2002-01-01def"))
    alert(strDateTime("2000-02-30"))
    </script>
      

  11.   

    qiushuiwuhen(秋水无恨) 
    you are right!
    you are good!
      

  12.   

    功能:认多种格式,能自动纠错,
    测试值:
    2.2.3
    2002.3.20
    2002.2.30
    fdsa
    <input name=a alt="日期1" onblur="checkDateInput(this)" ><script language=javascript>function checkDateInput(obj)  //用于检查日期输入是否正确 (日期输入范围为1930-01-01 到2200-12-31)
    {
    if (obj.value.length==0) return false;
    var objValue=obj.value.replace(/[-\.]/g,"/");

    try
    {
    var a=new Date(objValue);
    if (isNaN(a))
    {
    obj.value="";
    alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进处了清除。");
    obj.focus();
    return false;
    }
    var b;
    if (a.getFullYear()<1900||a.getFullYear()>2200)
    {var Today=new Date();
    b=Today.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();
    }
    else if (a.getFullYear()<1930)
    b=(a.getFullYear()+100)+"-"+(a.getMonth()+1)+"-"+a.getDate();
    else b=a.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();
    obj.value=obj.value.replace(/[-\.\/]0*/g,"-");
    if (b!=obj.value)
    {
    obj.value=b;
    alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进行了修改。");
    obj.select();
    obj.focus();
    return false;
    }
    }
    catch(Exception)
    {
    obj.value="";
    alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进处了清除。");
    obj.focus();
    return false;
    }
    return true;
    }
    </script>
      

  13.   

    已经纠正错误了<script>
    var theyear,themonth,thedate
    var info=new Array("01",31,"02",28,"03",31,"04",30,"05",31,"06",30,"07",31,"08",31,"09",30,"10",31,"11",30,"12",31)
    var msg="非法日期";
    function checkDate(objdate){
    theyear=objdate.substr(0,4)
    themonth=objdate.substr(5,2)
    thedate=objdate.substr(8,2)
    var re=/\d{4}-\d{2}-\d{2}/
    if(re.test(objdate)==true){
    if(parseInt(theyear)%4!=0||(parseInt(objdate.substr(0,2))%4!=0&&objdate.substr(2,2)=="00"))
    check()
    else{
    info[3]=29;
    check()
    }
    }
    function check(){
    for(i=0;i<12;i++){
    if(themonth==info[2*i]&&parseInt(thedate)<=info[2*i+1]&&parseInt(thedate)>0){
    msg="正确日期";
    break;}
    else
    msg="非法日期";
    }
    }
    alert(msg);
    }
    checkDate("1900-02-29")
    </script>