正则表达式匹配版本号零或更多时间

sat*_*ttu 2 java regex

我正在编写一个正则表达式来匹配以下类型的字符串:

my-jar-1.2.3.5.jar
my-jar.jar 
my-jar-1.2.jar
Run Code Online (Sandbox Code Playgroud)

借助 A正则表达式进行版本号解析, 我发现了以下内容

String pat = "^my-jar(-|\\.)?(?:(\\d+)\\.)?(?:(\\d+)\\.)?(?:(\\d+)\\.)?(\\*|\\d+).jar$";
Pattern patt = Pattern.compile(pat);
System.out.println("For my-jar-1.2.jar - " + patt.matcher("my-jar-1.2.jar").find());
System.out.println("For my-jar-1.2.3.5.jar - " + patt.matcher("my-jar-1.2.3.5.jar").find());
System.out.println("For my-jar.jar - " + patt.matcher("my-jar.jar").find());
Run Code Online (Sandbox Code Playgroud)

输出是

For my-jar-1.2.jar - true
For my-jar-1.2.3.5.jar - true
For my-jar.jar - false
Run Code Online (Sandbox Code Playgroud)

如何在我的正则表达式中包含最后一个案例?

Tim*_*sen 5

以下正则表达式是否有任何问题:

^my-jar(\-\d+|\-\d+(\.\d+)*)?\.jar$
Run Code Online (Sandbox Code Playgroud)

在这里演示:

Regex101