gpt4 book ai didi

javascript - 使用正则表达式模拟通配符(glob)

转载 作者:行者123 更新时间:2023-11-28 08:38:14 24 4
gpt4 key购买 nike

我是 JavaScript 正则表达式的新手,我正在尝试根据输入文本字段创建通配符搜索,用户可以在其中使用星号 (*) 输入条件。

例如:用户可以搜索,*man(或)man*(或)man(或)* man*,所以我期待这样的结果,

1) man* = 应仅返回以 man(经理)开头的单词,但应忽略“性能”,

2) *man = 应该只返回以 man(人类)结尾的单词。它不应该返回“经理”和“绩效”,

3) *man* = 这应该返回字符串中任何位置存在的单词。

以下函数部分工作,但在搜索 man* 时不查找单词的开头(即它也返回“性能”)

function wildCardSearch(grdText, query) {
var queryPattern = query.replace(/\*/g, '\\w');
var queryRegex = new RegExp(queryPattern, 'i');
if (grdText.match(queryRegex))
return true;
}

请问有什么帮助吗?

最佳答案

我会执行以下操作:

function wildCardSearch(grdText, query) {
var queryPattern = query
.replace(/^([^*])|([^*])$/g, '$2\\b$1')
.replace(/\*/g, '');
var queryRegex = new RegExp(queryPattern, 'i');
return queryRegex.test(grdText);
}

每次搜索的结果:

wildCardSearch('performance', 'man')   // /\bman\b/i -> false
wildCardSearch('performance', 'man*') // /\bman/i -> false
wildCardSearch('performance', '*man') // /man\b/i -> false
wildCardSearch('performance', '*man*') // /man/i -> true

将上面的代码粘贴到浏览器控制台中进行检查。

关于javascript - 使用正则表达式模拟通配符(glob),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20825936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com