用于匹配特定表达式的RegEX

时间:2015-12-22 10:01:25

标签: c# 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

}

3 个答案:

答案 0 :(得分:3)

这应该有效。它将匹配每个版本号,并且至少需要一个数字。

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

    /api/v1/token => ok
    /api/v2560/token => ok
    /api/v/token => ko

您可以检查更复杂的正则表达式并对其进行测试here

<强>更新

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

答案 1 :(得分:3)

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

}

答案 2 :(得分:0)

我相信这是解决问题的方法。

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")