JavaScript-带通配符(*)的过滤器

JavaScript-带通配符(*)的过滤器,javascript,Javascript,我想用最终的通配符筛选一组项 比如说,我有以下几项: const items = ['Banana', 'Apple', 'Melon'] 现在,我想使用以下字符串进行筛选: e 预期产出:无 *e *ana 预期产量:苹果 *e* 预计产量:苹果、甜瓜 ana 预期产出:无 *e *ana 预期产量:香蕉 *an 预期产出:无 *an* 预期产量:香蕉 *an 我希望你明白我的意图。使用正则表达式或标准JS函数/库有什么聪明的方法吗?到目前为止,我找不到任何内容。您可以通

我想用最终的通配符筛选一组项

比如说,我有以下几项:

const items = ['Banana', 'Apple', 'Melon']
现在,我想使用以下字符串进行筛选:

e
预期产出:无

*e
*ana
预期产量:苹果

*e*
预计产量:苹果、甜瓜

ana
预期产出:无

*e
*ana
预期产量:香蕉

*an
预期产出:无

*an*
预期产量:香蕉

*an

我希望你明白我的意图。使用正则表达式或标准JS函数/库有什么聪明的方法吗?到目前为止,我找不到任何内容。

您可以通过将
*
s替换为
*
来构造正则表达式,以匹配任何字符,并用
^
$
包围通配符字符串(以匹配开头和结尾):

const items=[“香蕉”、“苹果”、“瓜”]
const filterBy=str=>items.filter(
item=>newregexp('^'+str.replace(/\*/g,'.'''.')+'$).test(item)
);
console.log(filterBy('e'));
console.log(filterBy('*e'));
console.log(filterBy('*e*');
console.log(filterBy('ana'));
console.log(filterBy('*ana'));
log(filterBy('*an'));
log(filterBy('*an*')参考链接: