用于RESTEasy Web方法的@Path中的正则表达式

时间:2013-10-30 04:10:53

标签: java regex rest resteasy

我需要为我的RESTEasy Web方法的@Path语句添加正则表达式,以允许以下两种类型的URL连接到Web方法:

...其中id ='r2lXIcBfNfnp2yOK',版本可以是'1'或'1.0.0'。我怎么能这样做?

到目前为止我的方法,它接受版本为'1.0.0'而不是'1':

 @GET() 
 @Produces("application/x-protobuf") 
 @Path("/Things/{id}.{version:
 (([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}")
    public String getThing( 
       @PathParam("id") String id, 
    @PathParam("version") @DefaultValue("1.0.0") String version, 
    @Context final HttpServletResponse response) 
{       
       //.... (rest of the method, irrelevant
}

我可以在上面的@Path语句中添加另一个正则表达式,还允许'1'作为版本吗?

我试过这个:

@Path("/{id}.{version: (([0-9\\*^\\.])|([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}

......但这不起作用。

我也试过这个:

@Path("/{id}.{version: (([0-9\\*])|([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}

...但是当我传入版本“1.0.0”时它只会切断第一个数字,使其变为“0.0”。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

使用\\d+((\\.\\d+){2})?允许<number><number>.<number>.<number>

\\d+允许一个或多个数字

(\\.\\d+){2}允许 a的模式。然后是一个或多个数字出现两次

以下?使第二个模式可选