我知道這裏有很多問題要問爲什麼他們的正則表達式失敗,但我無法專門看到Go/Golang。爲什麼我的正則表達式總是在Go中失敗?
我有一個ID類型,這是一個字符串,其中加入了一些方法:type ID string
和這個函數,如果ID有效,它應該返回一個bool。
我的有效性標準是:
- 20個字符。
- 任何大寫字母A-Z。
- 任何數字0-9。
所以我的正則表達式,我在幾個不同的在線工具測試是/[A-Z0-9]{20}/
但每次我跑我的驗證功能時,它返回無論輸入錯誤。具體來說,regexp.MatchString()
函數返回false和nil。
以下是我的驗證函數,即使當我將正則表達式更改爲/.{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
}
}
是否與我使用該函數的方式有關?我很難過。
Note: .ToUpper()函數在那裏,因爲當我的ID生成時,它們只生成大寫字母和0-9,但我想要「ABC」如果鍵入被視爲「ABC」手動在以後的日期。
輝煌!謝謝,它現在完美。 – leylandski 2015-04-02 14:54:21
我不得不等待'你可以在x分鐘內接受這個消息',否則我會立刻離開。 – leylandski 2015-04-02 15:17:33