Parameters match arbitrary strings in a path by matching up to the end of the segment, or up to any proceeding tokens. They are defined by prefixing a colon to the parameter name (:foo). Parameter names can use any valid JavaScript identifier, or be double quoted to use other characters (:"param-name").
Wildcard parameters match one or more characters across multiple segments. They are defined the same way as regular parameters, but are prefixed with an asterisk (*foo).
decode Function for decoding strings to params, or false to disable all processing. (default: decodeURIComponent)
const fn = match("/foo/:bar");
Please note:path-to-regexp is intended for ordered data (e.g. paths, hosts). It can not handle arbitrarily ordered data (e.g. query strings, URL fragments, JSON, etc).
PathToRegexp
The pathToRegexp function returns a regular expression for matching strings against paths. It
If you are rewriting paths with match and compile, consider using encode: false and decode: false to keep raw paths passed around.
To ensure matches work on paths containing characters usually encoded, such as emoji, consider using encodeurl for encodePath.
Parse
The parse function accepts a string and returns TokenData, the set of tokens and other metadata parsed from the input string. TokenData is can used with match and compile.
path A string.
options(optional)
encodePath A function for encoding input strings. (default: x => x, recommended: encodeurl)
Tokens
TokenData is a sequence of tokens, currently of types text, parameter, wildcard, or group.
Custom path
In some applications, you may not be able to use the path-to-regexp syntax, but still want to use this library for match and compile. For example:
An effort has been made to ensure ambiguous paths from previous releases throw an error. This means you might be seeing an error when things worked before.
Unexpected ? or +
In past releases, ?, *, and + were used to denote optional or repeating parameters. As an alternative, try these:
For optional (?), use an empty segment in a group such as /:file{.:ext}.
For repeating (+), only wildcard matching is supported, such as /*path.
For optional repeating (*), use a group and a wildcard parameter such as /files{/*path}.
Unexpected (, ), [, ], etc.
Previous versions of Path-to-RegExp used these for RegExp features. This version no longer supports them so they’ve been reserved to avoid ambiguity. To use these characters literally, escape them with a backslash, e.g. "\(".
Missing parameter name
Parameter names, the part after : or *, must be a valid JavaScript identifier. For example, it cannot start with a number or contain a dash. If you want a parameter name that uses these characters you can wrap the name in quotes, e.g. :"my-name".
Unterminated quote
Parameter names can be wrapped in double quote characters, and this error means you forgot to close the quote character.
Express <= 4.x
Path-To-RegExp breaks compatibility with Express <= 4.x in the following ways:
Regexp characters can no longer be provided.
The optional character ? is no longer supported, use braces instead: /:file{.:ext}.
Some characters have new meaning or have been reserved ({}?*+@!;).
The parameter name now supports all JavaScript identifier characters, previously it was only [a-z0-9].
Path-to-RegExp
Installation
Usage
Parameters
Parameters match arbitrary strings in a path by matching up to the end of the segment, or up to any proceeding tokens. They are defined by prefixing a colon to the parameter name (
:foo). Parameter names can use any valid JavaScript identifier, or be double quoted to use other characters (:"param-name").Wildcard
Wildcard parameters match one or more characters across multiple segments. They are defined the same way as regular parameters, but are prefixed with an asterisk (
*foo).Optional
Braces can be used to define parts of the path that are optional.
Match
The
matchfunction returns a function for matching strings against a path:falseto disable all processing. (default:decodeURIComponent)Please note:
path-to-regexpis intended for ordered data (e.g. paths, hosts). It can not handle arbitrarily ordered data (e.g. query strings, URL fragments, JSON, etc).PathToRegexp
The
pathToRegexpfunction returns a regular expression for matching strings against paths. Itfalse)true)[^/]for:namedparameters. (default:'/')true)Compile (“Reverse” Path-To-RegExp)
The
compilefunction will return a function for transforming parameters into a valid path:[^/]for:namedparameters. (default:'/')falseto disable entirely. (default:encodeURIComponent)Stringify
Transform
TokenData(a sequence of tokens) back into a Path-to-RegExp string.TokenDatainstanceDevelopers
encode: falseanddecode: falseto keep raw paths passed around.encodePath.Parse
The
parsefunction accepts a string and returnsTokenData, the set of tokens and other metadata parsed from the input string.TokenDatais can used withmatchandcompile.x => x, recommended:encodeurl)Tokens
TokenDatais a sequence of tokens, currently of typestext,parameter,wildcard, orgroup.Custom path
In some applications, you may not be able to use the
path-to-regexpsyntax, but still want to use this library formatchandcompile. For example:Errors
An effort has been made to ensure ambiguous paths from previous releases throw an error. This means you might be seeing an error when things worked before.
Unexpected
?or+In past releases,
?,*, and+were used to denote optional or repeating parameters. As an alternative, try these:?), use an empty segment in a group such as/:file{.:ext}.+), only wildcard matching is supported, such as/*path.*), use a group and a wildcard parameter such as/files{/*path}.Unexpected
(,),[,], etc.Previous versions of Path-to-RegExp used these for RegExp features. This version no longer supports them so they’ve been reserved to avoid ambiguity. To use these characters literally, escape them with a backslash, e.g.
"\(".Missing parameter name
Parameter names, the part after
:or*, must be a valid JavaScript identifier. For example, it cannot start with a number or contain a dash. If you want a parameter name that uses these characters you can wrap the name in quotes, e.g.:"my-name".Unterminated quote
Parameter names can be wrapped in double quote characters, and this error means you forgot to close the quote character.
Express <= 4.x
Path-To-RegExp breaks compatibility with Express <=
4.xin the following ways:?is no longer supported, use braces instead:/:file{.:ext}.{}?*+@!;).[a-z0-9].License
MIT