var strTime = "0000-00-00 上午00时00分00秒";
alert(/\d{4}-\d{2}-\d{2} 上午\d{2}时\d{2}分\d{2}秒/.test(strTime));

解决方案 »

  1.   

    //函数名:CheckDateTime  
    //功能介绍:检查是否为日期时间 
    function CheckDateTime(str){  
        var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
        var r = str.match(reg); 
        if(r==null)return false; 
        r[2]=r[2]-1; 
        var d= new Date(r[1], r[2],r[3], r[4],r[5], r[6]); 
        if(d.getFullYear()!=r[1])return false; 
        if(d.getMonth()!=r[2])return false; 
        if(d.getDate()!=r[3])return false; 
        if(d.getHours()!=r[4])return false; 
        if(d.getMinutes()!=r[5])return false; 
        if(d.getSeconds()!=r[6])return false; 
        return true;
    }
      

  2.   

    嘿,看来我又太多自编函数供大家参考了。
    检验函数一般用在form提交时的onsubmit函数校验,即
    if(不符合规定) {
       alert(提示信息);
       xxx.focus();
       return false;
    }
    下面是三个进行时间校验的函数:function dNotTime(value)
    // check if the value is NOT a time string
    // @param :value, value being checked
    // @return :if NOT time string return true, else return false
    {
    var value;
    var rexp = /[^\d]+/; // detect delimiter string
    if(!value) return true;
    var delimiter = value.match(rexp);
    if(delimiter) {
    delimiter = delimiter.toString();
    var dlen = delimiter.length;
    if(value.indexOf(delimiter) != 2) return true;
    value = value.substr(0,2) + value.substr(2 +dlen, 2) + value.substr(4 +2*dlen, 2);
    }
    var tarr = [];
    for(var k=0; k<3; k++) {
    tarr[k] = value.substr(2*k, 2);
    if(isNaN(tarr[k])) return true;
    tarr[k] = parseInt(tarr[k]);
    }
    if(tarr[0] < 0 || tarr[0] >= 24
    || tarr[1] < 0 || tarr[1] >= 60
    || tarr[2] < 0 || tarr[2] >= 60) {
    return true;
    }
    return false;
    }function dNotDate(value, y2d)
    // check if the value is NOT a date string
    // @param :value, value being checked
    // @param :y2d, two digital year flag
    // @return :if NOT date string return true, else return false
    {
    var value, y2d;
    var rexp = /[^\d]+/; // detect delimiter string
    if(!value) return true;
    var delimiter = value.match(rexp);
    var YRW = 4;
    if(y2d) YRW = 2;
    if(delimiter) {
    delimiter = delimiter.toString();
    var dlen = delimiter.length;
    if(value.indexOf(delimiter) != YRW) return true;
    value = value.substr(0,YRW) + value.substr(YRW +dlen, 2) + value.substr(YRW +2 +2*dlen, 2);
    }
    var tarr = [];
    for(var k=0; k<3; k++) {
    tarr[k] = value.substr((k==0?0:(YRW +2*(k-1))), (k==0?YRW:2));
    if(isNaN(tarr[k])) return true;
    tarr[k] = parseInt(tarr[k]);
    if(y2d && k==0) tarr[k] = 1900 +tarr[k]; //year 2 digital process
    }
    var febdays = ((tarr[0]%4 == 0) && (tarr[0]%100 != 0) || (tarr[0]%400 == 0))?29:28;
    var mdarr = new Array(31,febdays,31,30,31,30,31,31,30,31,30,31);
    if(tarr[0] < 0
    || tarr[1] < 1 || tarr[1] > 12
    || tarr[2] < 1 || tarr[2] > mdarr[tarr[1] -1]) {
    return true;
    }
    return false;
    }function dNotDateTime(value, delimiter, y2d)
    // check if the value is NOT a datetime string
    // @param :value, value being checked
    // @param :delimiter, delimiter between date string and time string
    // @param :y2d, two digital year flag
    // @return :if NOT datetime string return true, else return false
    {
    var value, delimiter, y2d;
    if(!value) return true;
    if(!delimiter) delimiter = "";
    var datestr, timestr;
    var DTW = 8;
    if(y2d) DTW = 6;
    if(!delimiter) {
    datestr = value.substr(0, DTW);
    timestr = value.substr(DTW, 6);
    } else {
    var dpos = value.indexOf(delimiter);
    datestr = value.substring(0, dpos);
    timestr = value.substring(dpos +delimiter.lenght, value.length);
    }
    return (dNotDate(datestr, y2d) || dNotTime(timestr));
    }
      

  3.   

    wsj(骆驼) 你好,用你的方法在strTime = "0000-00-00 上午00时00分00秒";时好用,但是如果strTime取页面中控件的值即:strTime=Editname.value.toString();就不成了:-(
    fason(阿信)的方法,我把:换成中文的时分秒后也不好用了,好像在窗口中输入的中文和在代码中直接写的中文有什么不同似的,为什么?