Regex GoLang中后缀检测的正则表达式

Regex GoLang中后缀检测的正则表达式,regex,go,Regex,Go,我试图强制我正在检查的字符串必须以冒号结尾。但是,我希望在此之前允许任何字符集 以下是允许的: match, _ := regexp.MatchString("([a-z]+):", "hello:") // Pass match, _ := regexp.MatchString("([a-z]+):", "a12ab3c4:") // Pass match, _ := regexp.MatchString("([a-z]+):", "a12#ab3c4:") // Pass 以下内容应失败:

我试图强制我正在检查的字符串必须以冒号结尾。但是,我希望在此之前允许任何字符集

以下是允许的:

match, _ := regexp.MatchString("([a-z]+):", "hello:") // Pass
match, _ := regexp.MatchString("([a-z]+):", "a12ab3c4:") // Pass
match, _ := regexp.MatchString("([a-z]+):", "a12#ab3c4:") // Pass
以下内容应失败:

match, _ := regexp.MatchString("([a-z]+):", ":::")  // Fail
match, _ := regexp.MatchString("([a-z]+):", "key1") // Fail
match, _ := regexp.MatchString("([a-z]+):", "")     // Fail
match, _ := regexp.MatchString("([a-z]+):", ":")    // Fail
match, _ := regexp.MatchString("([a-z]+):", "")     // Fail

我不太确定如何使用正则表达式来检查尾随冒号<代码>([a-z]+):似乎不太管用。

应该这样做,匹配任意数量的字符(不是“:”),并以“:”结尾

^[^:]+:+$

您要求使用正则表达式,但实现目标的更简单、性能更好的方法是:

func Matches(str string) bool {
    return str[len(str)-1] == ':' &&
        !strings.ContainsRune(str[0:len(str)-1], ':')
}

[a-z]
与大写字符或数字不匹配;使用
[a-zA-Z0-9]
代替应
你好:
通过或失败?从示例判断,必须以冒号结尾不是一套完整的要求。该模式的确切要求是什么?除了
之外的任何1+字符,然后在末尾添加
?请尝试
regexp.MatchString(`^[^:::+:$`,s)
,但它不会匹配
hello:
,因为有2个
s.@janos如果需要确保至少有1个小写字母,并且结尾有
,它应该是passTry。这不接受冒号前面的字符,并且
{1}
是redundant@ctwheels我相信是的,你可以在这里测试它:我知道它没有,事实上,这里有一个regex101链接可以证明它:嗯,它在很大程度上是有效的,但是你能帮我抓住它只是“:”的情况,它应该失败@苎麻
^[^:::+:$