3 回答
TA贡献1820条经验 获得超9个赞
它出现
^/$|^(?:/(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 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")
}
}
TA贡献1852条经验 获得超7个赞
您正在寻找的是以下内容(基于您发布的示例路径):
var validPath = regexp.MustCompile("^/((home|about)(/[a-zA-Z0-9]*)?|[a-zA-Z0-9]+\\.[a-z]+)?$")
- 3 回答
- 0 关注
- 174 浏览
添加回答
举报