将路由模板转换为正则表达式
Convert Route Templates into Regex
我有一个包含约 300 项服务的应用程序。我想为特定子路径添加授权。
我创建了一个自定义授权属性来验证路由。我想将路由模板转换为正则表达式,这样我可以确保将来的任何更改都会自动应用回授权属性。
例如我有一条路线。
var benefitRoute = "/employees/{employeeId:Guid}/benefit/{benefitId:guid}/enrollments";
我想用 .*
替换所有 {} 及其内容
"/employees/.*/benefit/.*/enrollments";
但是我尝试在 \{.+\}
上进行匹配,但是当我 运行 我的正则表达式时,它会在两个较小的之前抓住较大的。
Regex.Replace(route, "\{.+\}", ".*");
如何将路由模板转换为正则表达式。
您应该添加“?”这使得量词 "lazy",尝试
var benefitRoute = "/employees/{employeeId:Guid}/benefit/{benefitId:guid}/enrollments";
string pattern = @"{(.*?)}";
String result=Regex.Replace(benefitRoute, pattern, ".*");
您可以在此处找到更多信息 http://www.regular-expressions.info/repeat.html
我有一个包含约 300 项服务的应用程序。我想为特定子路径添加授权。 我创建了一个自定义授权属性来验证路由。我想将路由模板转换为正则表达式,这样我可以确保将来的任何更改都会自动应用回授权属性。
例如我有一条路线。
var benefitRoute = "/employees/{employeeId:Guid}/benefit/{benefitId:guid}/enrollments";
我想用 .*
替换所有 {} 及其内容"/employees/.*/benefit/.*/enrollments";
但是我尝试在 \{.+\}
上进行匹配,但是当我 运行 我的正则表达式时,它会在两个较小的之前抓住较大的。
Regex.Replace(route, "\{.+\}", ".*");
如何将路由模板转换为正则表达式。
您应该添加“?”这使得量词 "lazy",尝试
var benefitRoute = "/employees/{employeeId:Guid}/benefit/{benefitId:guid}/enrollments";
string pattern = @"{(.*?)}";
String result=Regex.Replace(benefitRoute, pattern, ".*");
您可以在此处找到更多信息 http://www.regular-expressions.info/repeat.html