
Security News
GitHub Actions Pricing Whiplash: Self-Hosted Actions Billing Change Postponed
GitHub postponed a new billing model for self-hosted Actions after developer pushback, but moved forward with hosted runner price cuts on January 1.
path-to-regexp
Advanced tools
Turn an Express-style path string such as /user/:name into a regular expression.
npm install path-to-regexp --save
var pathToRegexp = require('path-to-regexp');
// pathToRegexp(path, keys, options);
true the route will be case sensitive.true a slash is allowed to be trailing the path.false the path will match at the beginning.var keys = [];
var re = pathToRegexp('/foo/:bar', keys);
// re = /^\/foo\/([^\/]+?)\/?$/i
// keys = [{ name: 'bar', delimiter: '/', repeat: false, optional: false }]
The path has the ability to define parameters and automatically populate the keys array.
Named parameters are defined by prefixing a colon to the parameter name (:foo). By default, this parameter will match up to the next path segment.
var re = pathToRegexp('/:foo/:bar', keys);
// keys = [{ name: 'foo', ... }, { name: 'bar', ... }]
re.exec('/test/route');
//=> ['/test/route', 'test', 'route']
Parameters can be suffixed with a question mark (?) to make the entire parameter optional. This will also make any prefixed path delimiter optional (/ or .).
var re = pathToRegexp('/:foo/:bar?', keys);
// keys = [{ name: 'foo', ... }, { name: 'bar', delimiter: '/', optional: true, repeat: false }]
re.exec('/test');
//=> ['/test', 'test', undefined]
re.exec('/test/route');
//=> ['/test', 'test', 'route']
Parameters can be suffixed with an asterisk (*) to denote a zero or more parameter match. The prefixed path delimiter is also taken into account for the match.
var re = pathToRegexp('/:foo*', keys);
// keys = [{ name: 'foo', delimiter: '/', optional: true, repeat: true }]
re.exec('/');
//=> ['/', undefined]
re.exec('/bar/baz');
//=> ['/bar/baz', 'bar/baz']
Parameters can be suffixed with a plus sign (+) to denote a one or more parameters match. The prefixed path delimiter is included in the match.
var re = pathToRegexp('/:foo+', keys);
// keys = [{ name: 'foo', delimiter: '/', optional: false, repeat: true }]
re.exec('/');
//=> null
re.exec('/bar/baz');
//=> ['/bar/baz', 'bar/baz']
All parameters can be provided a custom matching regexp and override the default. Please note: Backslashes need to be escaped in strings.
var re = pathToRegexp('/:foo(\\d+)', keys);
// keys = [{ name: 'foo', ... }]
re.exec('/123');
//=> ['/123', '123']
re.exec('/abc');
//=> null
It is possible to write an unnamed parameter that is only a matching group. It works the same as a named parameter, except it will be numerically indexed.
var re = pathToRegexp('/:foo/(.*)', keys);
// keys = [{ name: 'foo', ... }, { name: '0', ... }]
re.exec('/test/route');
//=> ['/test/route', 'test', 'route']
Path-To-RegExp breaks compatibility with Express <= 4.x in a few ways:
/user[(\\d+)]/:user(.*)/(.*)*, + and ?. E.g. /:user*You can see a live demo of this library in use at express-route-tester.
MIT
Express is a web application framework for Node.js that includes its own routing capabilities, which are similar to path-to-regexp. Express uses path-to-regexp internally for its routing logic.
React Router is a routing library for React that uses path-to-regexp-like pattern matching for defining routes and extracting parameters, but it is specifically tailored for React applications.
url-pattern is another library for matching URLs against patterns and extracting parameters. It offers a similar API to path-to-regexp but with different syntax and additional options for pattern matching.
FAQs
Express style path to RegExp utility
The npm package path-to-regexp receives a total of 58,516,713 weekly downloads. As such, path-to-regexp popularity was classified as popular.
We found that path-to-regexp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
GitHub postponed a new billing model for self-hosted Actions after developer pushback, but moved forward with hosted runner price cuts on January 1.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.