用于匹配特定表达式的RegEX

本文关键字:表达式 RegEX 用于 | 更新日期: 2023-09-27 18:27:52

我想使用Regex检查而不是

if( actionContext.Request.RequestUri.AbsolutePath == "/api/v1/token")

使用类似的东西

Regex rgx = new Regex(@"/api/v1/token");

并且不仅匹配v1,还匹配v2、v3、v4等等…

if(rgx. actionContext.Request.RequestUri.AbsolutePath.isMatch){
//then do further actions
}

用于匹配特定表达式的RegEX

 Regex rgx = new Regex("^'/api'/v[1234]'/token$");
if(rgx.IsMatch(actionContext.Request.RequestUri.AbsolutePath)){
//then do further actions
}

这应该可以工作。它将匹配每个版本号,并且至少需要一个编号。

    Regex rgx = new Regex(@"^/api/v[0-9]+?/token$");
    /api/v1/token => ok
    /api/v2560/token => ok
    /api/v/token => ko

你可以检查更复杂的正则表达式并在这里测试

更新

为了消除评论中询问的类似v0的操作,请参阅标记的答案edit02。

我相信这就是您问题的解决方案。

Regex rgx = new Regex(@"/api/v[0-9][0-9]*/token")

请注意,由于您没有指定是否只需要v1、v2、v3和v4或任何编号后缀,我假设是后者。

编辑01:正如一位好心的朋友指出的那样,这也可以通过使用这个来实现,我想这是更好的方法

Regex rgx = new Regex(@"/api/v[0-9]+?/token")

编辑02:这将按照询问问题的人最初的要求消除v0

Regex rgx = new Regex(@"/api/v[1-9][0-9]*/token")