path_to_regexp 0.1.1

  • Installing
  • Versions
  • new50


Converts a path such as /user/:id into a regular expression.


pathToRegExp() converts a path specification into a regular expression that matches conforming paths.

final regExp = pathToRegExp('/user/:id');
regExp.hasMatch('/user/12'); // => true
regExp.hasMatch('/user/alice'); // => true

Custom Parameters

By default, parameters match anything until the next delimiter. This behavior can be customized by specifying a regular expression in parentheses following a parameter name.

final regExp = pathToRegExp(r'/user/:id(\d+)');
regExp.hasMatch('/user/12'); // => true
regExp.hasMatch('/user/alice'); // => false

Optional Parameters

A parameter can be made optional by appending a ?.

final regExp = pathToRegExp(r'/user/:id(\d+)?');
regExp.hasMatch('/user/12'); // => true
regExp.hasMatch('/user'); // => true

Extracting Parameters

Parameters can be extracted from a path specification during conversion into a regular expression.

final parameters = <String>[];
final regExp = pathToRegExp('/user/:id', parameters: parameters);
parameters; // => ['id']

Extracting Arguments

extract() maps the parameters of a path specification to their corresponding arguments in a match.

final parameters = <String>[];
final regExp = pathToRegExp('/user/:id', parameters: parameters);
final match = regExp.matchAsPrefix('/user/12');
extract(parameters, match); // => {'id': '12'}

Missing optional arguments are omitted from the results.

final parameters = <String>[];
final regExp = pathToRegExp('/user/:id?', parameters: parameters);
final match = regExp.matchAsPrefix('/user');
extract(parameters, match); // => {}


pathToFunction() converts a path specification into a function that generates matching paths.

final toPath = pathToFunction('/user/:id');
toPath({'id': '12'}); // => '/user/12'

Optional parameters may be omitted from the map of arguments.

final toPath = pathToFunction('/user/:id?');
toPath({}); // => '/user'


parse() converts a path specification into a list of tokens, which can be used to create a regular expression or path generating function.

final tokens = parse('/users/:id');
final regExp = tokensToRegExp(tokens);
final toPath = tokensToFunction(tokens);

Similar to pathToRegExp(), parameters can also be extracted during parsing.

final parameters = <String>[];
final tokens = parse('/users/:id', parameters: parameters);

If you intend to match and generate paths from the same path specification, parse() and the token-based functions should be preferred to their path-based counterparts. This is because the token-based functions can reuse the same tokens, whereas each path-based function must parse the path specification anew.


Prefix Matching

By default, a regular expression created by pathToRegExp or tokensToRegExp matches the entire input. However, if the optional prefix argument is true, it may also match as a prefix until a delimiter.

final regExp = pathToRegExp('/user/:id', prefix: true);
regExp.hasMatch('/user/12/details'); // => true


Try the path_to_regexp_demo to experiment with this library.


This package is heavily inspired by its JavaScript namesake path-to-regexp.


  • Lowers SDK constraint so that Pub can analyze the package and generate documentation.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  path_to_regexp: ^0.1.1

2. Install it

You can install packages from the command line:

with pub:

$ pub get

with Flutter:

$ flutter packages get

Alternatively, your editor might support pub get or flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:path_to_regexp/path_to_regexp.dart';
Version Uploaded Documentation Archive
0.1.1 Jul 4, 2018 Go to the documentation of path_to_regexp 0.1.1 Download path_to_regexp 0.1.1 archive
0.1.0 Jul 4, 2018 Go to the documentation of path_to_regexp 0.1.0 Download path_to_regexp 0.1.0 archive
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Jul 20, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.0.0-dev.69.0
  • pana: 0.11.7


Detected platforms: Flutter, web, other

No platform restriction found in primary library package:path_to_regexp/path_to_regexp.dart.

Issues and suggestions

Support Dart 2 in pubspec.yaml.

The SDK constraint in pubspec.yaml doesn't allow the Dart 2.0.0 release. For information about upgrading it to be Dart 2 compatible, please see

Package is pre-v1 release.

While there is nothing inherently wrong with versions of 0.*.*, it usually means that the author is still experimenting with the general direction of the API.

Maintain an example.

Create a short demo in the example/ directory to show how to use this package. Common file name patterns include: main.dart, example.dart or you could also use path_to_regexp.dart.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev.63.0 <2.0.0
Dev dependencies
test ^1.2.0