gpt4 book ai didi

javascript - 如何在angularjs中使用通配符搜索?

转载 作者:行者123 更新时间:2023-11-30 16:46:18 26 4
gpt4 key购买 nike

我想实现通配符搜索。现在写下我正在做的是:

var patt = new RegExp(input); 
if(patt.test(searchString))
$scope.filteredModel.push(searchString);

但这不会给出通配符搜索结果。即,如果我输入 v*,我应该得到所有以 v 开头的 字符串。但在这种情况下,因为我使用的是 regExp,所以我得到了所有字符串(因为 v* 表示 0 次或更多v) 。我如何自定义它?

最佳答案

您获取用户输入并将其转换为等效的通配符。 *应该变成 .*你应该添加 ^在开头只匹配以给定模式开头的事物:

var patt = new RegExp('^' + input.replace(/\*/g, '.*'));

现在您可以使用 patt 进行测试并得到想要的结果。

您可能还想转义正则表达式中的其他特殊字符:

var specialCharacters = /([.\\+?[^\]$(){}=!<>|:-])/g;
var patt = new RegExp('^' + input.replace(specialCharacters, "\\$1").replace(/\*/g, '.*'));

这可能看起来很可怕,但它所做的只是添加 \在这些中的任何一个前面:. \ + ? [ ^ ] $ ( ) { } = ! < > | : - .这样,如果用户输入 v*ABC+它将尝试匹配以 v 开头的内容并以 ABC+ 结尾, 而不是以 ABC 结尾和可变数量的 C就像ABCCCCCCC .

关于javascript - 如何在angularjs中使用通配符搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31183733/

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