我想使用正则表达式检查而不是
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
}
答案 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")