@@ -32,19 +32,25 @@ function pathtoRegexp(path, keys, options) {
32
32
33
33
path = path
34
34
. concat ( strict ? '' : '/?' )
35
- . replace ( / \/ \( / g, '(?:/ ' )
36
- . replace ( / ( \/ ) ? ( \. ) ? : ( \w + ) (?: ( \( . * ? \) ) ) ? ( \? ) ? / g, function ( _ , slash , format , key , capture , optional ) {
37
- keys . push ( { name : key , optional : ! ! optional } ) ;
35
+ . replace ( / \/ \( / g, '/ (?:' )
36
+ . replace ( / ( [ \/ \. ] ) / g, '\\$1' )
37
+ . replace ( / ( \\ \/ ) ? ( \\ \. ) ? : ( \w + ) ( \( . * ? \) ) ? ( \* ) ? ( \? ) ? / g , function ( match , slash , format , key , capture , star , optional ) {
38
38
slash = slash || '' ;
39
+ format = format || '' ;
40
+ capture = capture || '([^/' + format + ']+?)' ;
41
+ optional = optional || '' ;
42
+
43
+ keys . push ( { name : key , optional : ! ! optional } ) ;
44
+
39
45
return ''
40
46
+ ( optional ? '' : slash )
41
47
+ '(?:'
42
- + ( optional ? slash : '' )
43
- + ( format || '' ) + ( capture || ( format ? '([^/.]+)' : '([^/]+)' ) ) + ')'
44
- + ( optional || '' ) ;
48
+ + format + ( optional ? slash : '' ) + capture
49
+ + ( star ? '((?:[\\/' + format + '].+?)?)' : '' )
50
+ + ')'
51
+ + optional ;
45
52
} )
46
- . replace ( / ( [ \/ . ] ) / g, '\\$1' )
47
53
. replace ( / \* / g, '(.*)' ) ;
48
54
49
- return new RegExp ( '^' + path + ( end ? '$' : '' ) , sensitive ? '' : 'i' ) ;
55
+ return new RegExp ( '^' + path + ( end ? '$' : '(?=\/|$) ' ) , sensitive ? '' : 'i' ) ;
50
56
} ;
0 commit comments