diff --git a/regexp.go b/regexp.go index d3f25de..06728dd 100644 --- a/regexp.go +++ b/regexp.go @@ -10,6 +10,7 @@ import ( "net/http" "net/url" "regexp" + "strconv" "strings" ) @@ -227,7 +228,7 @@ func braceIndices(s string) ([]int, error) { // varGroupName builds a capturing group name for the indexed variable. func varGroupName(idx int) string { - return fmt.Sprintf("v%d", idx) + return "v" + strconv.Itoa(idx) } // ---------------------------------------------------------------------------- @@ -250,7 +251,7 @@ func (v *routeRegexpGroup) setMatch(req *http.Request, m *RouteMatch, r *Route) subexpNames := v.host.regexp.SubexpNames() varName := 0 for i, name := range subexpNames[1:] { - if name == varGroupName(varName) { + if name != "" && name == varGroupName(varName) { m.Vars[v.host.varsN[varName]] = hostVars[i+1] varName++ } @@ -264,7 +265,7 @@ func (v *routeRegexpGroup) setMatch(req *http.Request, m *RouteMatch, r *Route) subexpNames := v.path.regexp.SubexpNames() varName := 0 for i, name := range subexpNames[1:] { - if name == varGroupName(varName) { + if name != "" && name == varGroupName(varName) { m.Vars[v.path.varsN[varName]] = pathVars[i+1] varName++ } @@ -292,7 +293,7 @@ func (v *routeRegexpGroup) setMatch(req *http.Request, m *RouteMatch, r *Route) subexpNames := q.regexp.SubexpNames() varName := 0 for i, name := range subexpNames[1:] { - if name == varGroupName(varName) { + if name != "" && name == varGroupName(varName) { m.Vars[q.varsN[varName]] = queryVars[i+1] varName++ }