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

时间:2017-10-06 21:41:30

标签: 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]+):", ":::")  // 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]+):似乎无法正常工作。

2 个答案:

答案 0 :(得分:2)

这应该这样做,匹配任意数量的字符(不是':')并结束':'

^[^:]+:+$

答案 1 :(得分:0)

你要求一个正则表达式,但实现目标的更简单,更好的表现方式如下:

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