正则表达式以验证图像

丹妮:

我正在用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

有人可以帮我吗?

威克多·史翠比维(WiktorStribiżew):

它出现

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

应该为您工作。请参阅regex演示

模式分解:

  • ^/$- /整个字符串
  • | - 要么...
  • ^ -字符串开始
  • (?:/(home|about|badge))?- /+ homeabout或的可选序列badge
  • /- /后跟一个符号
  • ((?: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")
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章