为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式来验证图像

正则表达式来验证图像

Go
牧羊人nacy 2021-12-20 10:21:08
我正在用 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任何人都可以帮我解决这个问题吗?
查看完整描述

3 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

它出现

^/$|^(?:/(home|about|badge))?/((?:badge|abc)\.png|[a-zA-Z0-9]*)$

应该为你工作。请参阅正则表达式演示

模式分解:

  • ^/$-/作为一个完整的字符串

  • | - 或者...

  • ^ - 字符串的开始

  • (?:/(home|about|badge))?- 可选序列/+ 或者home,aboutbadge

  • /- 一个/符号后跟

  • ((?:badge|abc)\.png|[a-zA-Z0-9]*) - 第 1 组捕获:

    • (?:badge|abc)\.png-badgeabc跟随.png

    • | - 或者...

    • [a-zA-Z0-9]* - 零个或多个字母数字

  • $ - 字符串结束

这是Go 游乐场演示

package main


import "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")

    }

}


查看完整回答
反对 回复 2021-12-20
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您正在寻找的是以下内容(基于您发布的示例路径):

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


查看完整回答
反对 回复 2021-12-20
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

您可以使用以下正则表达式进行验证:

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

PS:我做了一个灵活的正则表达式,所以它接受了大量的图像格式:pngjpgjpeg等..

你可以在这里测试:Regex


查看完整回答
反对 回复 2021-12-20
  • 3 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信