判断时间的正则表达式

2022-05-13 0 395

普通方法为,分离出小时、分钟、秒分别进行判断:

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”这种格式了。唉~~~~

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 正则表达式 判断时间的正则表达式 https://www.niceym.com/34753.html