【问题标题】:Convert Route Templates into Regex将路由模板转换为正则表达式
【发布时间】:2020-03-30 19:43:03
【问题描述】:

我有一个包含约 300 项服务的应用程序。我想为特定子路由添加授权。 我创建了一个自定义授权属性来验证路由。我想将路由模板转换为正则表达式,因此我可以确保将来的任何更改都会自动应用回授权属性。

例如,我有一条路线。

var benefitRoute =  "/employees/{employeeId:Guid}/benefit/{benefitId:guid}/enrollments";

我想用 .* 替换所有 {} 及其内容

"/employees/.*/benefit/.*/enrollments";

但是我尝试在 \{.+\} 上进行匹配,但是当我运行正则表达式时,它会在两个较小的之前抓取较大的。

Regex.Replace(route, "\{.+\}", ".*");

如何将路由模板转换为正则表达式。

【问题讨论】:

    标签: c# asp.net-web-api routing


    【解决方案1】:

    您应该添加“?”这使得量词“懒惰”,试试

            var benefitRoute =  "/employees/{employeeId:Guid}/benefit/{benefitId:guid}/enrollments";
            string pattern = @"{(.*?)}";
            String result=Regex.Replace(benefitRoute, pattern, ".*");
    

    你可以在这里找到更多信息http://www.regular-expressions.info/repeat.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2016-04-02
      • 1970-01-01
      • 2019-05-11
      • 2014-11-08
      相关资源
      最近更新 更多