我正在开发一个Docker项目,需要编写一个正则表达式来检查仓库名称。要求如下:
- 只包含ASCII字符,不包括大写字母。
- 特殊字符只包括句点(.),连字符(-)和下划线(_)。
- 只以字母和数字开头和结尾。
- 特殊字符不能连续出现。
- 长度限制(最小:2,最大:255)。
接下来,我的正则表达式是:
([a-z0-9]+(?:[._-][a-z0-9]+)*){2,255}
但是,如果仓库名称为e-e_1.1
,就不行了。
当我把它改成:
[a-z0-9]+(?:[._-][a-z0-9]+)*{2,255}
没问题。
有人能解释吗?谢谢提前。
regex{m,n}
匹配 "rege" 后跟m
到n
次 "x" 字符,(regex){m,n}
匹配 "regexregexregex..regex"(重复m
到n
次)。 - Maroun