A small and easy-to-use utility module for matching strings using named and/or unnamed wildcards for JavaScript.
$ npm install wildcard-named
import wildcard from "wildcard-named";
import wildcard from "wildcard-named";
wildcard("//blog.com/page/14", "//blog.com/page/[digit:page]");
// { 'page': '14' }
wildcard("abc-123:d2f", "[digit:a]-[alpah:]:[alnum:c]");
// { 'a': 'abc', '0': '123', 'c': 'd2f' }
import wildcard from "wildcard-named";
wildcard("a-b-c", "[alpah:]-[alpah:]-[alpah:]");
// { '0': 'a', '1': 'b', '2': 'c' }
When the pattern cannot be resolved, it will return undefined
.
import wildcard from "wildcard-named";
wildcard("a-b-c", "[alpah:]");
// undefined
You can add your own filters using the .addFilter(filter, regex)
function, like this:
import wildcard, { addFilter } from "wildcard-named";
addFilter("testA", "(.*?)");
addFilter("testB", "([0-9])");
wildcard("match-1", "[testA:a]-[testB:b]");
// { 'a': 'match', 'b': '1' }
All registered filters are stored in a Map at wildcard.filters
.
Filter | Regex | Description |
---|---|---|
digit |
([0-9]+) |
Digits. |
alnum |
([0-9A-Za-z]+) |
Alphanumeric characters. |
alpha |
([A-Za-z]+) |
Alphabetic characters. |
xdigit |
([0-9A-Fa-f]+) |
Hexadecimal digits. |
punct |
([\u2000-\u206F\u2E00-\u2E7F\'!"#$%&()*+,\-./:;<=>?@\[\]^_{}~]+) |
Punctuation (with symbols). |
print |
([\x20-\x7e]*) |
Visible characters and spaces (anything except control characters). |
upper |
([A-Z]+) |
Uppercase letters. |
lower |
([a-z]+) |
Lowercase letters. |
all |
(.*?) |
Everything. |
word |
([A-Za-z0-9_]+) |
Word characters (letters, numbers and underscores). |
space |
([ \t\r\n\v\f]+) |
All whitespace characters, including line breaks. |
graph |
([\x21-\x7E]+) |
Visible characters (anything except spaces and control characters). |
blank |
([ \t]+) |
Space and tab. |
ascii |
([\x00-\x7F]+) |
ASCII characters. |
cntrl |
([\x00-\x1F\x7F]+) |
Control characters. |
$ npm test