如何在angularjs中使用通配符搜索
how to use Wildcard search in angularjs?
我想实现通配符搜索。现在写我正在做的是:
var patt = new RegExp(input);
if(patt.test(searchString))
$scope.filteredModel.push(searchString);
但这并没有给出通配符搜索结果。即,如果我输入v*
,我应该得到以v
开始的所有字符串。但在这种情况下,当我使用regExp
时,我将获得所有字符串(因为v*
意味着v
的0次或更多次)。如何自定义?
您接受用户输入并将其转换为等效的通配符。*
应该变成.*
,并且应该在开头添加^
,以便只匹配以给定模式开始的内容:
var patt = new RegExp('^' + input.replace(/'*/g, '.*'));
现在您可以使用patt
进行测试,并获得所需的结果。
此外,您可能希望转义regex中的其他特殊字符:
var specialCharacters = /([.''+?[^']$(){}=!<>|:-])/g;
var patt = new RegExp('^' + input.replace(specialCharacters, "''$1").replace(/'*/g, '.*'));
这看起来可能很可怕,但它所做的只是在其中任何一个前面添加'
:. ' + ? [ ^ ] $ ( ) { } = ! < > | : -
。这样,如果用户输入v*ABC+
,它将尝试匹配以v
开始并以ABC+
结束的内容,而不是以ABC
和可变数量的C
结束,如ABCCCCCCC
。
如果您正在使用正则表达式,也许您可以尝试使用不同字符的简写版本。
正则表达式的一些实现允许您使用常用序列的简写版本,它们是:
''d、 一位数字([0-9])
''D、 非数字([^0-9])
''w、 一个单词(字母数字)([a-zA-Z0-9])
''W、 非单词([^a-zA-Z0-9])
''s、 空白([''t''n''r''f])
''S、 非空白([^''t''n''r''f])
源
相关文章:
- JavaScript中的通配符日期形式
- JavaScript上的通配符(也许这不费吹灰之力?)
- 带有通配符的姓氏Reg表达式
- javascript中通配符搜索的正则表达式
- Javascript:通配符正则表达式搜索
- 如何通过 jquery 通配符搜索数据属性的精确包含值
- 用于搜索的通配符表达式
- Indexeddb:使用通配符进行搜索
- 使用通配符在JS中搜索数组
- Javascript通配符regex搜索结果不一致
- 通过通配符字符串快速搜索数组
- 如何使用MySQL和PHP创建一个通配符搜索函数
- 在couchdb中的通配符搜索
- Select2 -搜索通配符匹配
- 在搜索字符串中包含通配符的正则表达式
- 如何在angularjs中使用通配符搜索
- 阵列搜索的Regex通配符
- MongoDB中的通配符搜索
- 搜索字符串中的通配符
- 通配符搜索(?, *)在字符串数组中使用javascript