Turn a regular expression (e.g.,
/\/user\/(?<id>[^/]+)/) into a path string (e.g.,"/user/:id").
RegExp: /\/user\/(?<id>[^/]+)/
Matches: /user/1, /user/2, /user/3, etc.
| Path | Document | |
|---|---|---|
| Angular | /user/:id |
https://angular.dev/guide/routing/router-reference#configuration |
| Path-To-RegExp | /user/:id |
https://github.com/pillarjs/path-to-regexp?tab=readme-ov-file#parameters |
| React | /user/:id |
https://reactrouter.com/start/framework/routing#dynamic-segments |
| Vue | /user/:id |
https://router.vuejs.org/guide/essentials/dynamic-matching.html |
RegExp: /(?:\/(?<lang>[^/]+))?\/categories/
Matches: /categories, /en/categories, /fr/categories, etc.
| Path | Document | |
|---|---|---|
| Angular | - | https://angular.dev/guide/routing/routing-with-urlmatcher |
| Path-To-RegExp | {/:lang}/categories |
https://github.com/pillarjs/path-to-regexp?tab=readme-ov-file#optional |
| React | /:lang?/categories |
https://reactrouter.com/start/framework/routing#optional-segments |
| Vue | /:lang?/categories |
https://router.vuejs.org/guide/essentials/route-matching-syntax.html#Optional-parameters |
RegExp: /\/files(?<path>\/[^\/]+?)*/. (needs to extract each segment manually)
Matches: /files/1, /files/1/2, /files/1/2/3, etc.
| Path | Document | |
|---|---|---|
| Angular | - | https://angular.dev/guide/routing/routing-with-urlmatcher |
| Path-To-RegExp | /files/*path |
https://github.com/pillarjs/path-to-regexp?tab=readme-ov-file#wildcard |
| React | /files/* |
https://reactrouter.com/start/framework/routing#splats |
| Vue | /files/:path* |
https://router.vuejs.org/guide/essentials/route-matching-syntax.html#Repeatable-params |
RegExp: /.*/
Matches: anything
| Path | Document | |
|---|---|---|
| Angular | ** |
https://angular.dev/guide/routing/router-reference#configuration |
| Path-To-RegExp | /*path |
https://github.com/pillarjs/path-to-regexp?tab=readme-ov-file#wildcard |
| React | * |
https://reactrouter.com/start/framework/routing#splats |
| Vue | /:pathMatch(.*)* |
https://router.vuejs.org/guide/essentials/dynamic-matching.html#Catch-all-404-Not-found-Route |
// For Path-to-regexp, e.g., `/\/user\/(?<id>[^/]+)/` `"/user/:id"`
import { regExpToPath } from "regexp-to-path";
// For Angular, e.g., `/.*/` `"**"`
// import { regExpToPathAngular } from "regexp-to-path";
// For React, e.g., `/\/project(?:\/task)?\/(?<taskId>[^/]+)/` `"/project/task?/:taskId"`
// import { regExpToPathReact } from "regexp-to-path";
// For Vue, e.g., `/\/(?<chapters>\d*)/` `"/:chapters(\\d+)*"`
// import { regExpToPathVue } from "regexp-to-path";regExpToPath(/\/user\/(?<id>[^/]+)/);
//=> "/user/:id"