diff --git a/src/ngRoute/route.js b/src/ngRoute/route.js index 2d7ce8e40a3e..6f441ec9ba04 100644 --- a/src/ngRoute/route.js +++ b/src/ngRoute/route.js @@ -185,7 +185,7 @@ function $RouteProvider(){ path = path .replace(/([().])/g, '\\$1') - .replace(/(\/)?:(\w+)([\?\*])?/g, function(_, slash, key, option){ + .replace(/(\/)?:(\w+)(?::([^\/]+))?([?*])?/g, function (_, slash, key, rxconstraint, option) { var optional = option === '?' ? option : null; var star = option === '*' ? option : null; keys.push({ name: key, optional: !!optional }); @@ -194,7 +194,7 @@ function $RouteProvider(){ + (optional ? '' : slash) + '(?:' + (optional ? slash : '') - + (star && '(.+?)' || '([^/]+)') + + (star && '(.+?)' || rxconstraint && ('(' + rxconstraint + ')') || '([^/]+)') + (optional || '') + ')' + (optional || '');