我试图强制执行我检查的字符串必须以冒号结尾。但是,我希望在此之前允许任何字符集。
允许以下内容:
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]+):
似乎无法正常工作。
答案 0 :(得分:2)
这应该这样做,匹配任意数量的字符(不是':')并结束':'
^[^:]+:+$
答案 1 :(得分:0)
你要求一个正则表达式,但实现目标的更简单,更好的表现方式如下:
func Matches(str string) bool {
return str[len(str)-1] == ':' &&
!strings.ContainsRune(str[0:len(str)-1], ':')
}