matcher alternatives and similar modules
Based on the "Text" category.
Alternatively, view matcher alternatives based on common mentions on social networks and blogs.
-
nanoid
A tiny (124 bytes), secure, URL-friendly, unique string ID generator for JavaScript -
Flexsearch
Next-Generation full text search library for Browser and Node.js -
Numeral.js
A javascript library for formatting and manipulating numbers. -
Underscore.string
String manipulation helpers for javascript -
i18n-node
Lightweight simple translation module for node.js / express.js with dynamic json storage. Uses common __('...') syntax in app and templates. -
StegCloak
Hide secrets with invisible characters in plain text securely using passwords ๐ง๐ปโโ๏ธโญ -
camelcase
Convert a dash/dot/underscore/space separated string to camelCase: foo-bar โ fooBar -
string-length
Get the real length of a string - by correctly counting astral symbols and ignoring ansi escape codes -
parse-columns
Parse text columns, like the output of unix commands -
unhomoglyph
Replace all homoglyphs with base characters. Useful to detect similar strings.
SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of matcher or a related project?
README
matcher
Simple wildcard matching
Useful when you want to accept loose string input and regexes/globs are too convoluted.
Install
$ npm install matcher
Usage
const matcher = require('matcher');
matcher(['foo', 'bar', 'moo'], ['*oo', '!foo']);
//=> ['moo']
matcher(['foo', 'bar', 'moo'], ['!*oo']);
//=> ['bar']
matcher('moo', ['']);
//=> []
matcher('moo', []);
//=> []
matcher([''], ['']);
//=> ['']
matcher.isMatch('unicorn', 'uni*');
//=> true
matcher.isMatch('unicorn', '*corn');
//=> true
matcher.isMatch('unicorn', 'un*rn');
//=> true
matcher.isMatch('rainbow', '!unicorn');
//=> true
matcher.isMatch('foo bar baz', 'foo b* b*');
//=> true
matcher.isMatch('unicorn', 'uni\\*');
//=> false
matcher.isMatch('UNICORN', 'UNI*', {caseSensitive: true});
//=> true
matcher.isMatch('UNICORN', 'unicorn', {caseSensitive: true});
//=> false
matcher.isMatch(['foo', 'bar'], 'f*');
//=> true
matcher.isMatch(['foo', 'bar'], ['a*', 'b*']);
//=> true
matcher.isMatch('unicorn', ['tri*', 'UNI*'], {caseSensitive: true});
//=> false
matcher.isMatch('unicorn', ['']);
//=> false
matcher.isMatch('unicorn', []);
//=> false
matcher.isMatch([], 'bar');
//=> false
matcher.isMatch([], []);
//=> false
matcher.isMatch('', '');
//=> true
API
It matches even across newlines. For example, foo*r
will match foo\nbar
.
matcher(inputs, patterns, options?)
Accepts a string or an array of strings for both inputs
and patterns
.
Returns an array of inputs
filtered based on the patterns
.
matcher.isMatch(inputs, patterns, options?)
Accepts a string or an array of strings for both inputs
and patterns
.
Returns a boolean
of whether any of given inputs
matches all the patterns
.
inputs
Type: string | string[]
String or array of strings to match.
options
Type: object
caseSensitive
Type: boolean
\
Default: false
Treat uppercase and lowercase characters as being the same.
Ensure you use this correctly. For example, files and directories should be matched case-insensitively, while most often, object keys should be matched case-sensitively.
patterns
Type: string | string[]
Use *
to match zero or more characters.
A leading !
negates the pattern.
An input string will be omitted, if it does not match any non-negated patterns present, or if it matches a negated pattern, or if no pattern is present.
Benchmark
$ npm run bench
Related
- matcher-cli - CLI for this module
- multimatch - Extends
minimatch.match()
with support for multiple patterns
Get professional support for this package with a Tidelift subscription Tidelift helps make open source sustainable for maintainers while giving companiesassurances about security, maintenance, and licensing for their dependencies.