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链接可以证明它:嗯,它在很大程度上是有效的,但是你能帮我抓住它只是“:”的情况,它应该失败@苎麻^[^:::+:$