来源:自学PHP网 时间:2014-10-28 17:28 作者: 阅读:次
[导读] 刚刚学习正则,正则正是很好很强大的东西。练习下,时间格式为“HH:mm:ss”或“HH:mm”,采用24小时制。...
普通方法为,分离出小时、分钟、秒分别进行判断:
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”这种格式了。唉~~~~ |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com