Javascript 使用星号(通配符)匹配字符串

Javascript 使用星号(通配符)匹配字符串,javascript,Javascript,我想测试数组中的任何字符串是否与特定字符串匹配。但是,数组中的字符串可能包含星号模式 var toTest = ["foo_*", "*foo_1", "foo_1*", "bar", "*foo"]; var toMatch = "foo_1"; 对于此示例,结果将为真,因为foo\u*、*foo\u 1和foo\u 1*将与foo\u 1匹配,但bar和*foo不会匹配 我曾尝试将split函数与lodash一起使用。一些函数似乎过于复杂,我无法使其一致工作 function isMatc

我想测试数组中的任何字符串是否与特定字符串匹配。但是,数组中的字符串可能包含星号模式

var toTest = ["foo_*", "*foo_1", "foo_1*", "bar", "*foo"];
var toMatch = "foo_1";
对于此示例,结果将为真,因为
foo\u*
*foo\u 1
foo\u 1*
将与
foo\u 1
匹配,但
bar
*foo
不会匹配

我曾尝试将
split
函数与lodash
一起使用。一些
函数似乎过于复杂,我无法使其一致工作

function isMatching() {
    return _.some(toTest , function(a) {
        return _.some(a.split("*"), function(part1, idx1) {
            return (part1.length && _.some(toMatch.split(part1), function(part2, idx2) {
                return (part2.length && idx1 == idx2);
            }));
        });
    });
}

为了达到预期的效果,请使用下面的选项使用过滤器、索引和替换

var-toTest=[“foo_*”、“*foo_1”、“foo_1*”、“bar”、“*_-foo”];
var toMatch=“foo_1”;

console.log(toTest.filter(v=>toMatch.indexOf(v.replace('*','')!==-1))
要获得预期的结果,请使用下面的选项使用filter、indexOf和replace

var-toTest=[“foo_*”、“*foo_1”、“foo_1*”、“bar”、“*_-foo”];
var toMatch=“foo_1”;

console.log(toTest.filter(v=>toMatch.indexOf(v.replace('*','')!==-1))
是否可以有>1个通配符?也就是说,
“*foo\uu*\ u bar”
?不需要,不需要。只有一个通配符。您是否有可能认为*应该匹配所有通配符?例如,当使用
foo_1
进行测试时,
foo_*
应该返回true?@LuisÁvila是的,没错。是否可以有>1个通配符?也就是说,
“*foo\uu*\ u bar”
?不需要,不需要。只有一个通配符。您是否有可能认为*应该匹配所有通配符?例如,当使用
foo\u1
测试时,
foo\u1
应该返回true?@LuisÁvila是的,没错。*foo应该是*foo,它会在不应该的时候出现在列表中。@kemicofa,我刚才看到的问题是,确切地说,在你的数组中没有
*foo
,但
*\u foo
*\u foo应该是*foo,它会在不应该的时候出现在列表中。@kemicofa,我刚才看到的问题是,确切地说,在你的数组中没有
*foo
,但
*\u foo