一,前端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;i<parts.length;i++){
if(isNaN(parts[i])){
return false;
}
}
h = parts[0];
m = parts[1];
if(h<0||h>23){
return false;
}
if(m<0||m>59){
return false;
}
if(parts.length == 3){
if(parts[2]<0 || parts[2]>59){
return false;
}
}
return true;
}
这段代码和上边的正则没有对比就没有伤害。
建议正则不太熟悉的去深入了解一下。