我正在尝试为类别页面创建通用路由
我目前用于评估的正则表达式,
\/[\w\/\-\%]+-c(\d+)(?:\/(\d{1,2}))?$
控制器代码,
Get[@"\/[\w\/\-\%]+-c(?<id>\d+)(?:\/(?<page>\d{1,2}))?$", true] = async (x, ct) =>
{
...
}
我正在尝试使用RegExr工具,它似乎正在传递正则表达式的所有可能的排列和组合,
i.e /anytgc123423/test/c123323/niec454stest/mystery-123-4534-thriller-suspense-c79/11
Result:
Group 1: 79
Group 2: 11
相同的正则表达式无法使用NancyFx Get函数解析示例中建议的url。
如果有人可以投光,那将会很有帮助。
提前致谢。
答案 0 :(得分:2)
https://github.com/NancyFx/Nancy/wiki/Defining-routes
使用(
和)
获取正则表达式的路由。
https://github.com/NancyFx/Nancy/blob/master/src/Nancy/Routing/Trie/TrieNodeFactory.cs#L38
if (start == '(' && end == ')')
{
return new RegExNode(parent, segment, this);
}
所以你的路线不会工作,除非你用括号包裹它。
在您的情况下,您希望使用使用^(
和)$
if (segment.StartsWith("^(") && (segment.EndsWith(")") || segment.EndsWith(")$")))
{
return new GreedyRegExCaptureNode(parent, segment, this);
}