检查String是否与特定正则表达式匹配

时间:2013-11-26 12:48:59

标签: java regex string

我对正则表达式和东西不是很好,所以我需要帮助。我必须检查输入值是否与特定的正则表达式格式匹配。这是我想要使用的格式25D8H15M。此处D表示天数H表示小时数,M表示分钟数。我需要正则表达式来检查字符串。感谢

3 个答案:

答案 0 :(得分:4)

以下是编写正则表达式的最简单方法:

if (str.matches("(?!$)(\\d+D)?(\\d\\d?H)?(\\d\\d?M)?"))
    // format is correct

这允许每个部分都是可选的,但是在开始时输入结束的负向前视意味着那里必须有某些

请注意,对于java,您不必编写输入的开头(^)和结束($),因为String.matches()必须与整体匹配 string,所以start和end是暗示

但是,这只是一个基本的正则表达式,因为99D99H99M将通过。 有效格式的正则表达式为:

if (str.matches("(?!$)(\\d+D)?([0-5]?\\dH)?([0-5]?\\dM)?"))
    // format is correct

这会将小时和分钟限制为0-59,从而为0-9范围内的值提供可选的前导零。

答案 1 :(得分:1)

简化的正则表达式可以是:

^\\d{1,2}D\\d{1,2}H\\d{1,2}M$

答案 2 :(得分:1)

尝试,

    String regex = "\\d{1,2}D\\d{1,2}H\\d{1,2}M";
    String str = "25D8H15M";

    System.out.println(str.matches(regex));