弹簧控制器中的正则表达式

Posted

技术标签:

【中文标题】弹簧控制器中的正则表达式【英文标题】:Regex in spring controller 【发布时间】:2013-08-27 15:48:05 【问题描述】:

我正在尝试构建一个请求过滤器,该过滤器只有在匹配字母 e 的模式时才会使用,然后是数字。但是我似乎无法让它工作。每次尝试使用正则表达式时,我都会收到 400 个错误。

如果我只使用以下内容,它会“工作”,但也会捕获没有我不想要的数字的映射。

@RequestMapping(value = "enumber",
            method = RequestMethod.GET)

我尝试了以下组合。

@RequestMapping(value = "enumber",
            params = "number:\\d+",
            method = RequestMethod.GET)

@RequestMapping(value = "enumber:\d+",
            method = RequestMethod.GET)

@RequestMapping(value = "/e^\\+?\\d+\$",
            method = RequestMethod.GET)

@RequestMapping(value = "/^\\e+?\\d+\$",
            method = RequestMethod.GET)

【问题讨论】:

【参考方案1】:

根据the documentation,您必须使用varName:regex 之类的东西。甚至还有一个例子:

@RequestMapping("/spring-web/symbolicName:[a-z-]+-version:\\d\\.\\d\\.\\dextension:\\.[a-z]+")
  public void handle(@PathVariable String version, @PathVariable String extension) 
    // ...
  

【讨论】:

【参考方案2】:

你应该使用:

 @RequestMapping("/enumber:\\d+)

注意\d 数字说明符之前的“转义斜杠”。

【讨论】:

我编辑了答案以删除对“解决方案”的引用,因为这样的陈述属于评论,而不是答案。但是,如果您能在答案中解释(编辑)所提供的代码对问题的作用,那就太好了。

以上是关于弹簧控制器中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

js正则表达式获取多个中括号[]中的内容

正则表达式大全

正则语法及在php中的应用

正则表达式语法与正则表达式在iOS中的常见用法

python中的正则表达式

MySQL数据库中的高级(进阶)正则和存储过程