猿问

正则表达式来验证图像

我正在用 golang 编写一个 Web 应用程序。我正在使用正则表达式来验证 URL。但我无法在 URL 验证中验证图像 (abc.png)。


var validPath = regexp.MustCompile("^/$|/(home|about|badge)/(|[a-zA-Z0-9]+)$")

上面的网址需要/home/,/about/但不能为/abc.png。我的意思是.它本身不起作用


我尝试了以下正则表达式,但没有帮助


var validPath = regexp.MustCompile("^/$|/(home|about|badge|.)/(|[a-zA-Z0-9]+)$")

var validPath = regexp.MustCompile("^/$|/(home|about|badge)(/|.)(|[a-zA-Z0-9]+)$")

我正在尝试匹配http://localhost:8080/badge.png


任何人都可以帮我解决这个问题吗?


牧羊人nacy
浏览 175回答 3
3回答

慕妹3146593

它出现^/$|^(?:/(home|about|badge))?/((?:badge|abc)\.png|[a-zA-Z0-9]*)$应该为你工作。请参阅正则表达式演示。模式分解:^/$-/作为一个完整的字符串| - 或者...^ - 字符串的开始(?:/(home|about|badge))?- 可选序列/+ 或者home,about或badge/- 一个/符号后跟((?:badge|abc)\.png|[a-zA-Z0-9]*) - 第 1 组捕获:(?:badge|abc)\.png-badge或abc跟随.png| - 或者...[a-zA-Z0-9]* - 零个或多个字母数字$ - 字符串结束这是Go 游乐场演示。package mainimport "fmt"import "regexp"func main() {    //var validPath = regexp.MustCompile("^/((home|about)(/[a-zA-Z0-9]*)?|[a-zA-Z0-9]+\\.[a-z]+)?$")    var validPath = regexp.MustCompile(`^/$|^(?:/(home|about|badge))?/((?:badge|abc)\.png|[a-zA-Z0-9]*)$`)    fmt.Println(validPath.MatchString("/"), validPath.MatchString("/home/"), validPath.MatchString("/about/"), validPath.MatchString("/home/13jia0"), validPath.MatchString("/about/1jnmjan"), validPath.MatchString("/badge.png"), validPath.MatchString("/abc.png"))    fmt.Println(validPath.MatchString("/nope/"), validPath.MatchString("/invalid.png"), validPath.MatchString("/test/test"))    m := validPath.FindStringSubmatch("/about/global")    fmt.Println("validate() :: URL validation path m[1] : ", m[1])    fmt.Println("validate() :: URL validation path m[2] : ", m[2])    if m == nil || m[2] != "global" {        fmt.Println("Not valid")    }}

慕姐4208626

您正在寻找的是以下内容(基于您发布的示例路径):var validPath = regexp.MustCompile("^/((home|about)(/[a-zA-Z0-9]*)?|[a-zA-Z0-9]+\\.[a-z]+)?$")

蛊毒传说

您可以使用以下正则表达式进行验证:var validPath = regexp.MustCompile("^\/(home|about|badge)\/[a-zA-Z0-9]+[.][a-z]+$")PS:我做了一个灵活的正则表达式,所以它接受了大量的图像格式:png,jpg,jpeg等..你可以在这里测试:Regex
随时随地看视频慕课网APP

相关分类

Go
我要回答