我正在用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
有人可以帮我吗?
它出现
^/$|^(?:/(home|about|badge))?/((?:badge|abc)\.png|[a-zA-Z0-9]*)$
应该为您工作。请参阅regex演示。
模式分解:
^/$
- /
整个字符串|
- 要么...^
-字符串开始(?:/(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 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] 删除。
我来说两句