function globToRegExp
globToRegExp(glob: string,options?: GlobToRegExpOptions): RegExpConvert 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}- Matchesfooorbar.[abcd]- Matchesa,b,cord.[a-d]- Matchesa,b,cord.[!abcd]- Matches any single character besidesa,b,cord.[[:<class>:]]- Matches any character belonging to<class>.[[:alnum:]]- Matches any digit or letter.[[:digit:]abc]- Matches any digit,a,borc.- See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes for a complete list of supported character classes.
\- Escapes the next character for anosother than"windows".- ` - Escapes the next character for
osset to"windows". /- Path separator.\- Additional path separator only forosset 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:
- Requires
{ globstar: true }. **- Matches any number of any path segments.- Must comprise its entire path segment in the provided glob.
- See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option.
Note the following properties:
- The generated
RegExpis 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).jswill wrongly fail to matchfoobar.js, even thoughfoobaris notfoo. 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
glob: stringoptional
options: GlobToRegExpOptions