regex,用于测试docker映像名是否以注册表作为前缀?

mgdq6dx1  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(341)

这个问题在这里已经有了答案

参考-这个正则表达式是什么意思(1个答案)
上个月关门了。
我正在寻找一个正则表达式,将测试是否一个docker图像前缀与注册表。
以下是它应该匹配的内容:

docker.io/library/busybox
docker.io/library/busybox:latest
docker.io/busybox

它不应该:

busybox
busybox:latest
library/busybox
library/busybox:latest
m4pnthwp

m4pnthwp1#

使用 [^/]+ 而不是 .* 作为 * 表示0或更多 + 表示一次或多次重复
以及 [^/] 表示不是斜杠的任何字符。
为什么你需要括号?当组匹配时,这些对提取组很有用。如果只需要布尔结果(匹配与否),可以从表达式中删除它们。
你编辑了这个问题,所以这里是我编辑的答案:

[^/]+\.[^/.]+/([^/.]+/)?[^/.]+(:.+)?

说明: [^/] :不是斜杠的任何字符 [^/]+ :任何不包含斜杠的字符串 \. :点(转义不表示任何字符) [^/.]+ :任何不包含斜杠或点的字符串 [^/]+\.[^/.]+/ :任何以点分隔并以斜杠结尾的字符串(通常是docker.io)。 ()? 意味着这可能发生0或1次(可选) (:.+)? :可选字符串,由冒号后跟任何字符串组成,但不能为空。

相关问题