简体   繁体   English

JavaScript / jQuery - 检查字符串是否包含其中一个关键字

[英]JavaScript/jQuery - Check if string contains one of the keywords

How to test if string contains on of the selected keywords? 如何测试字符串是否包含所选关键字?

For example 例如

var keywords = 'small, big, large'
var string = 'big brown bear';

function wordInString(string, keywords){
  return new RegExp( '\\b' + keywords + '\\b', 'i').test(string);
}

The above only works for a single word, I need to be able to test multiple words, and exact match. 以上只适用于单个单词,我需要能够测试多个单词,并且完全匹配。

Split the string into words, and use an array of keywords 将字符串拆分为单词,并使用一组关键字

 function wordInString(string, keywords) { return string.split(/\\b/).some(Array.prototype.includes.bind(keywords)); } var keywords = ['small', 'big', 'large']; var result1 = wordInString('big brown bear', keywords); // true var result2 = wordInString('great brown bear', keywords); // false var result3 = wordInString('Big brown bear', keywords); // false console.log(result1, result2, result3); 

ES5 (cross-browser) version ES5(跨浏览器)版本

function wordInString(string, keywords) {
    return string.split(/\b/).filter(function(w) {
        return keywords.indexOf(w) !== -1;
    }).length > 0;
}

To return all the words 要归还所有的话

 function wordInString(string, keywords) { return keywords.filter(function(x) { return this.includes(x) }, string.split(/\\b/)); } var keywords = ['small', 'big', 'large']; var result1 = wordInString('big brown bear large', keywords); // ["big", "large"] var result2 = wordInString('great brown bear', keywords); // [] var result3 = wordInString('Big brown bear', keywords); // [] console.log(result1); console.log(result2); console.log(result3); 

To return the first matching word or an empty string 返回第一个匹配的单词或空字符串

 function wordInString(string, keywords) { var r = ""; string.split(/\\b/).some( x => { return r = keywords.includes(x) ? x : ""; }) return r; } var keywords = ['small', 'big', 'large']; var result1 = wordInString('big brown bear large', keywords); // "big" var result2 = wordInString('great brown bear', keywords); // "" var result3 = wordInString('Big brown bear', keywords); // "" console.log(result1); console.log(result2); console.log(result3); 

Use an array of keywords, and loop through them: 使用一组关键字,并循环它们:

 var keywords = ['small', 'big', 'large']; console.log( wordInString("big brown bear", keywords) ); // true console.log( wordInString("it's small!", keywords) ); // true console.log( wordInString("it's larger than the other", keywords) );// false console.log( wordInString("it's black and red", keywords) ); // false function wordInString(string, keywords){ for(var i=0; i<keywords.length; i++){ if(new RegExp( '\\\\b' + keywords[i] + '\\\\b', 'i').test(string)){ return true; } } return false; } 

Returns matched word or preset string if not found. 如果未找到,则返回匹配的字或预设字符串。

 function wordInString(string, keywords) { return string.split(/\\b/).filter(word => keywords.some(w => w === word))[0] || 'empty'; } var keywords = ['small', 'big', 'large']; var result1 = wordInString('big brown bear', keywords); // big var result2 = wordInString('tiny bear', keywords); // empty var result3 = wordInString('huge hairy bear', keywords); // empty console.log(result1, result2, result3); 

Here is a different solution using map , reduce functions and logical operators . 这是使用mapreduce函数和logical operators的不同解决方案。

 var keywords = 'small, big, large' var test1 = testString('big brown bear', keywords); //big var test2 = testString('great brown bear', keywords); // empty var test3 = testString('Big brown bear', keywords); // empty function wordInString(string, keywords){ return new RegExp( '\\\\b' + keywords + '\\\\b').test(string); } function testString(string,keywords){ var word='empty'; var result=keywords.split(',').map(function(item){ if(wordInString(string,item.trim())==true) word=item.trim(); return wordInString(string,item.trim()); }).reduce(function(curr,prev){ return curr || prev; }); return word; } console.log(test1) console.log(test2) console.log(test3) 

Split the keywords and then search indexOf of keywords on the string. 拆分关键字,然后在字符串上搜索关键字的indexOf

 var keywords = 'small, big, large' var string = 'big brown bear'; function wordInString(string, keywords) { return keywords.split(',').some(function(keyword) { return string.indexOf(keyword.trim()) == -1 ? false : true }); //return new RegExp('\\\\b' + keywords + '\\\\b', 'i').test(string); } console.log(wordInString(string, keywords)) console.log(wordInString(string, "xyz, abc")) console.log(wordInString("'a large bear'", "large, none")) 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Javascript / jQuery检查字符串是否包含一个单词或是否出现可选单词之一 - Javascript/jQuery check if string contains a word or occurrences of one of the optional words 检查元素是否包含JavaScript或jQuery中的三个字符串之一 - Check if element contains one of three string in JavaScript or jQuery 如何使用 JavaScript 检查字符串是否包含 object 中的某些关键字 - How to use JavaScript to check if a string contains certain keywords in an object 如何检查是否包含任何字符串顺序的所有关键字? 正则表达式 Javascript - How to check if contains all keywords in any order of string? RegExp Javascript 如何检查url是否在JQuery / Javascript中包含字符串 - How to check if url contains string in JQuery/Javascript 检查字符串是否包含任何字母(Javascript/jquery) - Check if string contains any letter (Javascript/jquery) 检查字符串是否包含数组中存在的任何关键字 - Check if string contains any keywords that exists in array Javascript:检查字符串中匹配的关键字数组 - Javascript: Check for an array of keywords match in a string 检查字符串是否包含来自单词数组(jquery,javascript)的整个单词 - Check if the string contains an entire word from an array of words (jquery, javascript) 如何在JavaScript中检查一个字符串是否包含变量值? - How can I check if one string contains a variable value in JavaScript?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM