Java中用于匹配HH:MM时间格式的正则表达式

avkwfej4  于 2023-09-29  发布在  Java
关注(0)|答案(3)|浏览(95)

我需要一个正则表达式来匹配HH:MM格式的时间。这是我的,它不起作用:

Pattern pattern = Pattern.compile("/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/");
        Matcher matcher = pattern.matcher(hora);
        
        if(matcher.matches()) {
            isHour = true;
        }

我试过了,但它一直给我假的

public static boolean isHour(String hora) {
    boolean isHour = false;
    
    try {
        
        Pattern pattern = Pattern.compile("/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/");
        Matcher matcher = pattern.matcher(hora);
        
        if(matcher.matches()) {
            isHour = true;
        }
        
    }catch(Exception e) {
        
        logger.error("error isDate boolean", e);

    }
    return isHour;
}

有什么解决方案吗?或者我是否错误地生成了正则表达式?谢谢你

jdg4fx2g

jdg4fx2g1#

  • "...我需要一个正则表达式来匹配HH:MM格式的时间。..."*

Java 中,不使用前导和尾随的/字符。
尝试以下模式。

(?:[01]\d|2[0-3]):[0-5]\d

下面是一个例子,其中 sString 值。

boolean b = s.matches("(?:[01]\\d|2[0-3]):[0-5]\\d");
vom3gejh

vom3gejh2#

使用java.time

private static boolean isHour(String hora) {
    try {
        LocalTime.parse(hora);
        return true;
    } catch (DateTimeParseException dtpe) {
        return false;
    }
}
jogvjijk

jogvjijk3#

试试这个:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public static boolean isHour(String hora) {
    boolean isHour = false;

    try {
        Pattern pattern = Pattern.compile("^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$");
        Matcher matcher = pattern.matcher(hora);
        
        if (matcher.matches()) {
            isHour = true;
        }
        
    } catch (Exception e) {
        // log the error using your logging mechanism, e.g., Logger
        logger.error("error isHour boolean", e);
    }
    return isHour;
}

相关问题