我的(有效?)正则表达式在gorilla / mux中不起作用

时间:2015-09-26 16:34:53

标签: regex go gorilla

我的代码中有这个正则表达式:

get.HandleFunc("/my/api/user/{userID:^([1-9][0-9]*)$}", app.Handle("user"))

但是当我运行测试时,只返回404。我也试过这个:

get.HandleFunc("/my/api/user/{userID:\\A([1-9][0-9]*)\\z}", app.Handle("user"))

它与我的旧版(但不正确)正则表达式完美配合:

get.HandleFunc("/my/api/user/{userID:[0-9]{1,}}", app.Handle("user"))

我想知道我的新正则表达式有什么问题。我尝试在一些网站上测试它,也使用Go中的regexp包,它总是有效。据我所知,gorilla/mux使用Go的regexp包。有什么想法吗?

我想要的是检测不包括零的正整数。

2 个答案:

答案 0 :(得分:3)

anchors很可能是这里的问题,你试图在字符串位置的开头/结尾断言。

我只想尝试修改旧的(工作)正则表达式,如下所示:

get.HandleFunc("/my/api/user/{userID:[1-9][0-9]*}", app.Handle("user"))

答案 1 :(得分:1)

如果要检测除0以外的正整数,则应使用此字符类:[1-9]\d*

这意味着,第一个数字必须介于1和9之间。其他数字(如果存在,请查看*)可以是任何整数,包括0。