- Vanilla browser, AMD & CommonJS compatible
- Works completely without hacks, polyfills etc
- Extensive test suite with 800+ tests
- No dependencies - one file
- Fast and small (~1KB gzipped)
Turns given path
into a regular expression
pathToRegex('/users/:userId/');
pathToRegex('/users/:userId/', {
caseSensitive: true // default: false
});
- path String to be converted into a regular expression.
- or a regular expression to inherit custom method
query
- or a regular expression to inherit custom method
- options
- caseSensitive When
true
the matching will be case sensitive.
- caseSensitive When
The return value of pathToRegex is a RegExp object with added properties (explanation down below)
Returns the fixed (static) portion of given path
pathToRegex.toFixed('/users/:userId/'); //-> /users/
pathToRegex.toFixed('/users/:userId'); //-> /users
pathToRegex.toFixed('/:page/'); //-> /
pathToRegex.toFixed('/i/like/turt*es'); //-> /i/like
var containsModifiers = pathToRegex.toFixed(path) === path;
- options
- path String of which to extract the fixed portion from
A mandatory capture group
var re = pathToRegex('/users/:userId');
re.query('/users/abc') //-> ['abc']
re.query('/users/18') //-> ['18']
re.query('/users/') //-> null
re.query('/users/18/more') //-> null
An optional capture group
var re = pathToRegex('/users/:userId?');
re.query('/users/abc') //-> ['abc']
re.query('/users/18') //-> ['18']
re.query('/users/') //-> [undefined]
re.query('/users/18/more') //-> null
A zero-or-more modifier
var re = pathToRegex('/page/*/update*');
re.query('/page/index/updateStuff') //-> ['index', 'Stuff']
re.query('/page/updateStuff') //-> [undefined, 'Stuff']
re.query('/page/update') //-> [undefined, undefined]
re.query('/page/updaate') //-> null
Is a proper RegExp instance but with to properties added:
- Function
query
- Identical to the native
RegExp.exec
but it pops the first mandatory full-match
- Identical to the native
- Number
length
The number of modifiers present in the path- pathToRegexp('/users/:userId?/:action).length => 2