判断一个字符串是否满足一个正则表达式数组的任一一个表达式(Golang)
代码如下:
1 package main 2 3 import ( 4 "fmt" 5 "regexp" 6 ) 7 8 // 判断str是否与白名单中的正则表达式匹配 9 func generateMatch(whiteList []string) func(string) bool { 10 // 为没一个白名单链接生成一个缓存的正则表达式匹配选项 11 var regeWhiteList = make([]*regexp.Regexp, len(whiteList)) 12 // 生成正则表达式匹配器 13 for i := range whiteList { 14 reg, _ := regexp.Compile(whiteList[i]) 15 regeWhiteList[i] = reg 16 } 17 18 return func(str string) bool { 19 // 遍历正则表达式匹配器,判断是否匹配 20 for i := range regeWhiteList { 21 if regeWhiteList[i].MatchString(str) { 22 return true 23 } 24 } 25 return false 26 } 27 } 28 29 30 func main() { 31 match := generateMatch([]string{"[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}"}) 32 fmt.Println(match("331b960f-e7f8-4986-b6eb-86226e1623a7")) 33 }