js正则校验日期格式和时间格式是否正确

一,前端jsp页面有一文本框输入时间  HH:mm:ss格式的   另一个文本框要求输入yyyymmdd格式的日期

       时间:

       由于未用到任何时间插件,只能通过js校验输入的时间是否正确,最简单的莫过于使用正则来校验了,

       var regex = /^(([0-2][0-3])|([0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/;

       var一个正则表达式,这个表达式检验的就是hh:mm:ss格式的字符串。

       但是如果用户只输入10:20,而最后的  :00  省略掉,难道要提示用户重新输入吗?

       NO,只需要改一下正则表达式即可。

       var regexs = /^(([0-2][0-3])|([0-1][0-9])):[0-5][0-9]$/;

       这个正则和上边的相比只是把最后的  :ss   给去掉了。

       日期:

       直接在js中通过Date对象来进行校验,但是这种方式不推荐使用,因为在java中Date date = new Date(yyyy,mm,dd);这个方法已经不推荐了。

二,校验

       然后,我们就可以写js来校验了
       

       //提交表单

       function submit(){
              //时间

              var time = form.time.value;
              
              var regex = /^(?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/;

              if(!regex.test(time)){

                      var regexs = /^(?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]$/;

                      if(!regexs.test(time)){

                          alert("时间格式不正确,请输入正确格式如   10:20 或 10:20:20");

                          form.time.focus();//获取焦点

                          return;

                         }

                         form.time.value = time + ":00";

              }
                
              //日期
              var riqi = form.riqi.value;
              if(riqi != ''){
                    var xxDate = new 
                     Date(riqi.substring(0,4),riqi.substring(4,6)-1,riqi.substring(6,8));
                    if(riqi.substring(0,4) != xxDate.getFullYear() || riqi.substring(4,6) != xxDate.getMonth() || riqi.substring(6,8) != xxDate.getDate()){

                        alert("日期格式不正确,");

                          form.riqi.focus();//获取焦点

                          return;
}
                }

       }

三,正则

       在刚开始不太熟悉正则的时候我的js校验代码是介个样子的:

function isTime(timeStr){
    var parts;
    parts = timeStr.spilt(":");
    if(parts.length < 1){
        return false;
    }
    
    for(i=0;i23){
        return false;
    }
    if(m<0||m>59){
        return false;
    }
    if(parts.length == 3){
        if(parts[2]<0 || parts[2]>59){
            return false;
        }
    }
    return true;
}

    这段代码和上边的正则没有对比就没有伤害。

    建议正则不太熟悉的去深入了解一下。

你可能感兴趣的:(前端)