我想用最终的通配符过滤掉一组项目。
假设我有以下物品:
const items = ['Banana', 'Apple', 'Melon']
我现在想用以下字符串过滤:
e
预期输出:无
*e
预期产量:苹果
*e*
预期产量:苹果,瓜
ana
预期输出:无
*ana
预期产量:香蕉
*an
预期输出:无
*an*
预期产量:香蕉
希望你能明白我的意思。使用正则表达式或标准JS函数/库有什么聪明的方法吗?到目前为止我找不到任何东西。
最佳答案
您可以通过将*
替换为.*
来匹配任何字符来构造正则表达式,并用^
和$
包围通配符字符串(以匹配开头和结尾):
const items = ['Banana', 'Apple', 'Melon']
const filterBy = str => items.filter(
item => new RegExp('^' + 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'));
console.log(filterBy('*an'));
console.log(filterBy('*an*'));
请注意,如果通配符字符串在正则表达式中包含其他具有特殊含义的字符,则必须使用escape them first。
关于javascript - JavaScript-使用通配符(*)进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52143451/