正则表达式不适用于Golang HandleFunc函数

时间:2019-05-06 06:53:41

标签: regex go

我正在尝试根据Go中的模式重定向URL。如果我的URL包含“ clientApi”,则将其发送到clientApiPoint函数,否则,将其发送到redirectApiPoint函数。我的handleRequest函数是

func handleRequest()  {
    r := mux.NewRouter()
    r.HandleFunc("/", homePage)
    r.HandleFunc("/clientApi", clientApiPoint)
    r.HandleFunc("/{^((?!clientApi).)*$}", redirectApiPoint)
    http.Handle("/", r)
    log.Fatal(http.ListenAndServe(":8081", nil))
} 

{^((?! clientApi)。)* $}如果我的网址是

,则正则表达式可以正常工作
localhost:8081/somerandonurl  (sending it to redirectApiPoint func)

但是如果网址中有一个或多个“ /”,则正则表达式不会将其重定向到redirectApiPoint函数。

localhost:8081/somerandonurl/somethingdifferent    (not sending it to redirectApiPoint. 404 page not found message)

1 个答案:

答案 0 :(得分:1)

由于第一个“ /”,您的Regex在“ localhost:8081 / somerandonurl”上工作,因此匹配。

您需要诸如“ /(.*$)”之类的东西,但这将匹配任何/ blala / blala /...

您可以从此处测试您的正则表达式: Regex