如何验证正则表达式中的HHMMSS

时间:2013-01-28 10:44:18

标签: java

我试过这样不行,但不适用于价值005959格式的HHMMSS

if(Pattern.matches("^([0-23])([0-59])([0-59])$", value))
{
    SimpleDateFormat dformat = new SimpleDateFormat("HHMMSS");
    dformat.setLenient(false);
    dformat.parse(value);
    return true;
}

2 个答案:

答案 0 :(得分:1)

你不能做那样的数值范围。要验证1-24(顺便说一下00的问题是什么?因为60在其他位置有效时是什么?)你需要像这样逐位进行:

(0[1-9]|1[0-9]|2[0-4])

也就是说,如果第一个数字是0,那么必须遵循1-9;如果1然后任何可以跟随;如果是2则必须遵循0-4。但是为什么还要使用正则表达式呢?完整:

^(0[1-9]|1[0-9]|2[0-4])(0[1-9]|[1-5][0-9]|60)(0[1-9]|[1-5][0-9]|60)$

但是,请检查0和60值的评论......

答案 1 :(得分:1)

正确的正则表达式应为:

^([01]\d|2[0-3])[0-5]\d[0-5]\d$

如评论60中所述,不是有效的分钟,也不是秒,24不是有效的小时。

在一个小时数从1到24,分钟从1到60的世界,你应该使用:

^(0[1-9]|1\d|2[0-4])(0[1-9]|[1-5]\d|60)(0[1-9]|[1-5]\d|60)$