检查字符串是否匹配特定的正则表达式

Sha*_*yan 1 java regex string

我不太擅长正则表达式之类的东西,所以我需要帮助。我必须检查输入值是否与特定的正则表达式格式匹配。这是我要使用的格式,25D8H15M. 这里的D意思是天数H表示小时,M表示分钟。我需要正则表达式来检查字符串。谢谢

Boh*_*ian 7

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

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

这允许每个部分都是可选的,但是在开始时对输入结束的负面展望意味着那里必须有一些东西

请注意如何使用 java 您不必对输入的开始 ( ^) 和结束 ( $)进行编码,因为String.matches()必须匹配整个字符串,所以开始和结束是隐含的

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

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

这将小时和分钟限制为0-59,允许范围内的值有一个可选的前导零0-9