Using Regular Expressions for URL Matching in Go
In Go, the net/http package provides the http.HandleFunc function for registering a handler function to a specific URL pattern. However, this function cannot be used to match URLs using regular expressions.
To use regular expressions for URL matching, you can register a handler to a rooted subtree and perform further regexp matching and routing within the handler function.
For instance, the following code demonstrates how to register a handler for the root URL pattern (/) and use regular expressions to match specific patterns:
import ( "fmt" "net/http" "regexp" ) var ( rNum = regexp.MustCompile(`\d`) // Matches URLs with digits rAbc = regexp.MustCompile(`abc`) // Matches URLs containing "abc" ) func main() { http.HandleFunc("/", route) http.ListenAndServe(":8080", nil) } func route(w http.ResponseWriter, r *http.Request) { switch { case rNum.MatchString(r.URL.Path): digits(w, r) case rAbc.MatchString(r.URL.Path): abc(w, r) default: w.Write([]byte("Unknown Pattern")) } } func digits(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Has digits")) } func abc(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Has abc")) }
Alternatively, you can use third-party libraries such as Gorilla MUX, which provides advanced URL routing and regexp matching capabilities.
The above is the detailed content of How Can I Use Regular Expressions for URL Matching in Go?. For more information, please follow other related articles on the PHP Chinese website!