我有一个类似 sca_HelloWorld_rev2.0.jar 的文件名
sca_{ProjectName}_rev{revisionId}.jar
Id can be 2.11 ,3.0,3,4.0,5,4.564
ProjectName can be HelloWorld,HelloWorld123,Hello_world
我正在尝试在 Java 中进行正则表达式验证?如何在 Java 中实现这一点?
谢谢。
static boolean isValid(String s){
return s.matches("^sca_\\w+?_rev\\d+(?:\\.\\d+)?\\.jar$");
}
\\w+
匹配一个或多个单词字符,即A-Z a-z 0-9 _
.
\\d+(?:\\.\\d+)?
匹配一个或多个数字,可选地后跟一个.
和一个或多个数字。
^
and表示字符串的$
开始和结束。
您可以使用String 函数进行匹配。所以对于你的情况
projectName.matches("sca_(HelloWorld|HelloWorld123|Hello_world)_rev(2.11|3.0|3|4.0|5|4.564).jar");
查看http://www.regexplanet.com/advanced/java/index.html以测试您的正则表达式
编辑:假设您的项目名称实际上可以是任何东西,并且您的修订号可以是 #、#.## 的格式,然后使用这个正则表达式
projectName.matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") 将为这些输入返回 true。
"sca_ADJOWE_rev2.12315.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = TRUE
"sca_PROJECT1_rev6.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = TRUE
"sca_HELLOWORLD_rev2.1.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = TRUE
"sca_HELLOWORLD_rev2.1.152.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = FALSE
"sca_rev2.1.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = FALSE
转到我上面发送的链接,输入该正则表达式并放入一些测试输入,如果您需要更多微调,请使用它。
这种模式必须是有效的:
sca_\w+?_rev\d.\d{1,3}\.jar