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 關注
- 202 瀏覽
添加回答
舉報