我知道这里有很多问题询问为什么他们的正则表达式失败,但我看不到任何专门针对 Go/Golang 的问题。
我有一个 ID 类型,它是一个带有一些方法的字符串:type ID string,如果 ID 有效,这个函数应该返回一个布尔值。
我的有效性标准是:
20 个字符长。
任何大写字母 AZ。
任何数字 0-9。
所以我在几个不同的在线工具上测试过的正则表达式是 /[A-Z0-9]{20}/
但是每次我运行我的验证函数时,无论输入如何,它都会返回 false。具体来说,该regexp.MatchString()函数返回 false 和 nil。
下面是我的验证函数,匹配总是假的,即使我将正则表达式更改/.{20}/为应该匹配 20 个任何东西。
func (this ID) validate() bool {
regexString := "/[A-Z0-9]{" + strconv.Itoa(MAX_ID_LENGTH) + "}/"
fmt.Println(regexString)
thisStr := this.ToString()
fmt.Println(thisStr)
charCount := utf8.RuneCountInString(thisStr)
fmt.Println(charCount)
thisStr = strings.ToUpper(thisStr)
fmt.Println(thisStr)
match, err := regexp.MatchString(regexString, thisStr)
fmt.Println(match, err)
//Check string length is correct and matches regex.
if charCount != MAX_ID_LENGTH || !match {
return false
} else {
return true
}
}
是否与我使用该功能的方式有关?我难住了。
注意: .ToUpper() 函数在那里,因为当我的 ID 生成时,它们只用大写字母和 0-9 生成,但如果以后手动输入,我希望“abc”被视为“ABC”。
噜噜哒
相关分类