Skip to main content

@std/path@0.215.0

latest
Works with
It is unknown whether this package works with Browsers, Deno, Node.js, Cloudflare Workers, Bun
It is unknown whether this package works with Browsers
It is unknown whether this package works with Deno
It is unknown whether this package works with Node.js
It is unknown whether this package works with Cloudflare Workers
It is unknown whether this package works with Bun
JSR Score70%
Published2 years ago (0.215.0)
function globToRegExp
globToRegExp(
glob: string,
): RegExp

Convert a glob string to a regular expression.

Tries to match bash glob expansion as closely as possible.

Basic glob syntax:

  • * - Matches everything without leaving the path segment.
  • ? - Matches any single character.
  • {foo,bar} - Matches foo or bar.
  • [abcd] - Matches a, b, c or d.
  • [a-d] - Matches a, b, c or d.
  • [!abcd] - Matches any single character besides a, b, c or d.
  • [[:<class>:]] - Matches any character belonging to <class>.
  • \ - Escapes the next character for an os other than "windows".
  • ` - Escapes the next character for os set to "windows".
  • / - Path separator.
  • \ - Additional path separator only for os set to "windows".

Extended syntax:

  • Requires { extended: true }.
  • ?(foo|bar) - Matches 0 or 1 instance of {foo,bar}.
  • @(foo|bar) - Matches 1 instance of {foo,bar}. They behave the same.
  • *(foo|bar) - Matches n instances of {foo,bar}.
  • +(foo|bar) - Matches n > 0 instances of {foo,bar}.
  • !(foo|bar) - Matches anything other than {foo,bar}.
  • See https://www.linuxjournal.com/content/bash-extended-globbing.

Globstar syntax:

Note the following properties:

  • The generated RegExp is anchored at both start and end.
  • Repeating and trailing separators are tolerated. Trailing separators in the provided glob have no meaning and are discarded.
  • Absolute globs will only match absolute paths, etc.
  • Empty globs will match nothing.
  • Any special glob syntax must be contained to one path segment. For example, ?(foo|bar/baz) is invalid. The separator will take precedence and the first segment ends with an unclosed group.
  • If a path segment ends with unclosed groups or a dangling escape prefix, a parse error has occurred. Every character for that segment is taken literally in this event.

Limitations:

  • A negative group like !(foo|bar) will wrongly be converted to a negative look-ahead followed by a wildcard. This means that !(foo).js will wrongly fail to match foobar.js, even though foobar is not foo. Effectively, !(foo|bar) is treated like !(@(foo|bar)*). This will work correctly if the group occurs not nested at the end of the segment.

Parameters

Return Type

Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@std/path

Import symbol

import { globToRegExp } from "@std/path/glob_to_regexp";
or

Import directly with a jsr specifier

import { globToRegExp } from "jsr:@std/path/glob_to_regexp";