我想用最终的通配符过滤项目的集合。
比方说,我有以下项目:
const items = ['Banana', 'Apple', 'Melon']现在,我想使用以下字符串进行筛选:
e预期输出:无
*e预期产出:苹果
*e*预期产量:苹果、甜瓜
ana预期输出:无
*ana预期输出: Banana
*an预期输出:无
*an*预期输出: Banana
我希望你明白我的意图。有没有用正则表达式或标准JS函数/库做这件事的聪明方法?到目前为止我找不到任何东西。
发布于 2018-09-03 13:14:50
您可以通过将*s替换为.*来构造正则表达式,以匹配任何字符,并使用^和$将通配符字符串括起来(以匹配开头和结尾):
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。
https://stackoverflow.com/questions/52143451
复制相似问题