我试过这样它不起作用,但不适用于值 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;
}
我试过这样它不起作用,但不适用于值 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;
}
你不能做这样的数字范围。要验证 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 值的注释...
正确的正则表达式应该是:
^([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)$