我不太擅长正则表达式之类的东西,所以我需要帮助。我必须检查输入值是否与特定的正则表达式格式匹配。这是我想要使用的格式,25D8H15M
。在这里,D
表示天数,H
表示小时,M
表示分钟。我需要正则表达式来检查字符串。谢谢
发布于 2013-11-26 12:59:36
下面是编写正则表达式的最简单方法:
if (str.matches("(?!$)(\\d+D)?(\\d\\d?H)?(\\d\\d?M)?"))
// format is correct
这允许每个部分都是可选的,但在开始时对end-of-input的负面展望意味着必须有一些东西。
请注意,在java中,您不必编写输入的开始(^
)和结束($
)代码,因为String.matches()
必须与整个字符串匹配,所以开始和结束是隐含的。
但是,这只是一个基本的正则表达式,因为99D99H99M
将通过。有效格式的正则表达式为:
if (str.matches("(?!$)(\\d+D)?([0-5]?\\dH)?([0-5]?\\dM)?"))
// format is correct
这将小时和分钟限制为0-59
,从而允许范围0-9
中的值有一个可选的前导零。
发布于 2013-11-26 12:50:50
简化的正则表达式可以是:
^\\d{1,2}D\\d{1,2}H\\d{1,2}M$
发布于 2013-11-26 12:53:27
试一下,
String regex = "\\d{1,2}D\\d{1,2}H\\d{1,2}M";
String str = "25D8H15M";
System.out.println(str.matches(regex));
https://stackoverflow.com/questions/20217551
复制相似问题