正则表达式以避免控制器名称中的“图像”

时间:2013-01-14 12:28:25

标签: regex asp.net-mvc maproute

在这一刻,我有了下一个MapRoute

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },// Parameter defaults
            new { controller = @"[^\.]*" }                          // Parameter constraints 
        );

我定义的约束是controller = @“[^。] *”

我需要一个约束来避免名为“Images”的控制器。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

没有必要使用反斜杠来逃避点,因为点在字符类中没有特殊含义。

为此,您可以使用否定前瞻:

new { controller = @"(?!Images)[^.]*" }

负向前瞻是一个锚点,就像^$一样,它不会消耗正则表达式中的文本,它正在寻找位置输入文字。 lookarounds的另一个名称是零宽度断言。