9

I have a route like so:

routes.MapRoute
    (
    "Profile",
    "profile/{username}",
    new { controller = "Profile", action = "Index" },
    new { username = @"^(getmoreactivity)" }
    );

This works fine for all users but I have a situation where I want to hit an action for getmoreactivity. So I want to make this constraint to say when username is NOT getmoreactivity. It's just not working though.

I've stuck on the RouteDebugger and tried @"[^(getmoreactivity)]" @"^^(getmoreactivity)" @"^getmoreactivity" @"[^getmoreactivity]". Well I've tried countless things but none solve my problem.

How the hell do you put in a NOT constraint on a whole word?

BritishDeveloper
  • 12,911
  • 7
  • 50
  • 60

1 Answers1

20

try:

routes.MapRoute 
( 
"Profile", 
"profile/{username}", 
new { controller = "Profile", action = "Index" }, 
new { username = "(?!getmoreactivity).*" } 
); 

?! is a lookahead: http://www.regular-expressions.info/refadv.html

......

BritishDeveloper
  • 12,911
  • 7
  • 50
  • 60
Lee Gunn
  • 7,982
  • 4
  • 37
  • 30
  • 1
    see also http://stackoverflow.com/questions/406230/regular-expression-to-match-line- that-doesnt-contain-a-word for more details – Simon_Weaver Sep 28 '15 at 01:16