javascript - JavaScript-使用通配符(*)进行过滤

标签 javascript

我想用最终的通配符过滤掉一组项目。

假设我有以下物品:

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/

相关文章:

javascript - 如何在 JSX for Atom 的 .js 文件中启用 HTML 标签的自动完成?

javascript - Ajax 请求在 Chrome 中成功,但在 Firefox 中失败

javascript - 是否有可能找到所有定义的具有特殊模式的 Javascript 对象?

javascript - 动态添加的CodeMirror : Change Language Mode

javascript - 下划线中的返回值每次循环都不会停止函数

javascript - JS中typeof的类型是什么

javascript - 参数列表后缺少 ),我该把它放在哪里?

javascript - 如果没有 jQuery,这段代码的相似之处是什么?

javascript - 自动将徽章定位在图像的 Angular 上

c# - 如何从 html 输入按钮单击调用 Windows Phone 8 代码隐藏方法