2017-10-11 46 views
0

我想对字符串执行一个简单的搜索,看它是否包含所有的几个搜索项,不敏感的态度。测试JavaScript字符串是否包含任何顺序的所有多个值,并且不区分大小写

例如,“快速棕色狐狸”包含单词“狐狸”和“快速”,所以我想要一个功能,可以采取这两个单词,并表明该短语包含他们两个,不管他们的顺序。

所以我想我要求的是一个基于字符串的“AND”搜索。

回答

0

一个简单的解决方案是使用array.every()方法来检查每个搜索项是否包含在一个字符串中。

我指定的搜索字词作为单个字符串,将用空格进行分割:

var haystackString = "The quick brown fox"; 
var needleString = "fox quick"; 

var searchTerms = needleString.split(" "); 

return searchTerms.every(function stringContains(element, index, array) { 
    return haystackString.toUpperCase().includes(element.toUpperCase()); 
}); 

以上将返回true

请注意,toUpperCase()可能不适用于所有语言。

0

将术语数组转换为RegExp。然后使用String#match查找字符串中的所有匹配项。如果匹配的数量是相同的项数,它包含了所有的人:

var str = 'The quick brown fox'; 
 

 
function containsAll(str, terms) { 
 
    var regexp = new RegExp(`\\b(${terms.join('|')})\\b`, 'gi'); 
 
    var matches = str.match(regexp); 
 
    
 
    return matches !== null && matches.length === terms.length; 
 
} 
 

 
console.log(containsAll(str, ['fox', 'quick'])); 
 

 
console.log(containsAll(str, ['cat', 'quick']));

相关问题