判断时间的正则表达式

所属分类: 网络编程 / 正则表达式 阅读数: 757
收藏 0 赞 0 分享
普通方法为,分离出小时、分钟、秒分别进行判断:
public static boolean timeCheck(String time, String owner) {
//检查时间字符串time是否满足格式“HH:mm:ss”或“HH:mm”,若不满足显示相应消息,并返回false
if(time.equals("")){
String msg = owner+" : "+"Time is EMPTY.";
MessageDialog.showError(Controller.getMainFrame(), msg);
return false;
}
int hours, minutes, seconds = 0;
StringTokenizer st = new StringTokenizer(time, ":");
int tokens = st.countTokens();
if (tokens != 3 && tokens != 2) {
String msg = owner+" : "+"Time " + time + " does not conform to the HH:mm:ss format, nor HH:mm format.";
MessageDialog.showError(Controller.getMainFrame(), msg);
return false;
}
String hourToken = st.nextToken();
try {
hours = Integer.parseInt(hourToken);
} catch (NumberFormatException nfe) {
String msg = owner+" : "+hourToken + " in " + time + " can not be parsed as hours.";
MessageDialog.showError(Controller.getMainFrame(), msg);
return false;
}
String minuteToken = st.nextToken();
try {
minutes = Integer.parseInt(minuteToken);
} catch (NumberFormatException nfe) {
String msg = owner+" : "+minuteToken + " in " + time + " can not be parsed as minutes.";
MessageDialog.showError(Controller.getMainFrame(), msg);
return false;
}
if(tokens == 3){
String secondToken = st.nextToken();
try {
seconds = Integer.parseInt(secondToken);
} catch (NumberFormatException nfe) {
String msg = owner+" : "+secondToken + " in " + time + " can not be parsed as seconds.";
MessageDialog.showError(Controller.getMainFrame(), msg);
return false;
}
}
if (hours < 0 || hours > 23) {
String msg = owner+" : "+"Specified hours: " + hours + ". Number of hours must be in the [0..23] range.";
MessageDialog.showError(Controller.getMainFrame(), msg);
return false;
}
if (minutes < 0 || minutes > 59) {
String msg = owner+" : "+"Specified minutes: " + minutes + ". Number of minutes must be in the [0..59] range.";
MessageDialog.showError(Controller.getMainFrame(), msg);
return false;
}
if (seconds < 0 || seconds > 59) {
String msg = owner+" : "+"Specified seconds: " + seconds + ". Number of seconds must be in the [0..59] range.";
MessageDialog.showError(Controller.getMainFrame(), msg);
return false;
}
return true;
}
正则方法为:
public static boolean timeCheck(String time, String owner) {
//检查时间字符串time是否满足格式“HH:mm:ss”,若不满足显示相应消息,并返回false
String regex = "(([01]\\d)|(2[0-3])):[0-5]\\d(:[0-5]\\d)?";
if(!time.matches(regex)){
String msg = owner+" : "+"Time is INVALID.";
MessageDialog.showError(Controller.getMainFrame(), msg);
return false;
}
return true;
}
  真是很好很强大啊!!不过上述正则“((2[0-3])|([01]\d)):[0-5]\d(:[0-5]\d)?”实现居然不能匹配“3:3:3”,郁闷!
  将正则改为“((2[0-3])|([0-1]?\d)):[0-5]?\d(:[0-5]?\d)?”倒是可以匹配“3:3:3”这种了,但“3:65:34”显然是不对的,却又匹配出两个来,晕!
  将正则改为“((2[0-3])|([0-1]?\d)):[0-5]?\d(:[0-5]?\d)”倒是可以匹配“3:3:3”,也能正确判断“3:65:34”,却又没法判断“3:34”这种格式了。唉~~~~
更多精彩内容其他人还在看

手机号码验证方法(正则验证)

这篇文章主要介绍了手机号码验证方法(正则验证),在文章中还给大家补充了最新手机号的验证正则表达式,需要的朋友可以参考下
收藏 0 赞 0 分享

利用正则表达式提取固定字符之间的字符串

这篇文章主要给大家介绍了利用正则表达式提取固定字符之间的字符串,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

js中使用正则表达式查找字母和数字的方法

这篇文章主要介绍了 js中使用正则表达式查找字母和数字的方法,在代码底部给大家介绍了js用正则表达式验证密码包含数字和字母的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

一个容易犯错的js手机号码验证正则表达式(推荐)

这篇文章主要介绍了 一个容易犯错的js手机号码验证正则表达式(推荐),需要的朋友可以参考下
收藏 0 赞 0 分享

正则表达式进行页面表单验证功能

一般做到注册页面的时候,当用户填完信息,都需要对他们的信息进行验证,这就要用到正则表达式。本文通过实例给大家介绍正则表达式进行页面表单验证功能,一起看看吧
收藏 0 赞 0 分享

比较常用的几个正则表达式匹配数字(收藏)

正则表达式用于字符串处理、表单验证等场合,实用高效。今天小编给大家分享比较常用的几个正则表达式匹配数字,需要的朋友参考下
收藏 0 赞 0 分享

php与javascript正则匹配中文的方法分析

这篇文章主要介绍了php与javascript正则匹配中文的方法,结合实例形式分析了针对utf-8与GBK编码情况下的php、javascript正则匹配中文操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

bash 中用于grep的正则表达式

正则表达式是一类用于匹配文本的表达方式,常用于grep命令中表达检索条件。接下来通过本文给大家介绍bash 中用于grep的正则表达式,需要的朋友参考下吧
收藏 0 赞 0 分享

js中string之正则表达式replace方法详解

本篇文章主要介绍了js中string之正则表达式replace方法详解,replace方法是javascript涉及到正则表达式中较为复杂的一个方法,严格上说应该是string对象的方法。
收藏 0 赞 0 分享

常用证件号码的正则表达式大全(收集整理)

前段时间做一个项目,需要对各种常用证件进行验证。而港澳通行证,台湾通行证,护照这些证件,在网上并没有找到做正则验证的方法。后来从脚本之家网站的代码中发现了这些验证规则,特效分享给大家,供大家参考
收藏 0 赞 0 分享
查看更多