检查字符串是否包含单词(不是子字符串)

时间:2016-11-23 12:21:17

标签: javascript

我正在尝试检查字符串是否包含特定单词,而不仅仅是子字符串。

以下是一些示例输入/输出:

var str = "This is a cool area!";
containsWord(str, "is"); // return true
containsWord(str, "are"); // return false
containsWord(str, "area"); // return true

以下功能无效,因为第二种情况也会返回true:

function containsWord(haystack, needle) {
     return haystack.indexOf(needle) > -1;
}

这也不起作用,因为它在第三种情况下返回false:

function containsWord(haystack, needle) {
     return (' ' +haystack+ ' ').indexOf(' ' +needle+ ' ') > -1;
}

如何检查字符串是否包含单词?

3 个答案:

答案 0 :(得分:2)



$(function(){


function containsWord(haystack, needle) {
     
     return haystack.replace(/[^a-zA-Z0-9 ]/gi, '').split(" ").indexOf(needle) > -1;
}
  
  var str = "This is a cool area!";
console.log(containsWord(str, "is")); // return true
console.log(containsWord(str, "are")); // return false
console.log(containsWord(str, "area")); 
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您可以删除所有特殊字符,然后将字符串与空格分开以获取单词列表。现在只需检查id searchValue是否在此单词列表中

&#13;
&#13;
function containsWord(str, searchValue){
  str = str.replace(/[^a-z0-9 ]/gi, '');
  var words = str.split(/ /g);
  return words.indexOf(searchValue) > -1
}

var str = "This is a cool area!";
console.log(containsWord(str, "is")); // return true
console.log(containsWord(str, "are")); // return false
console.log(containsWord(str, "area")); // return true
&#13;
&#13;
&#13;

答案 2 :(得分:2)

尝试使用正则表达式,其中\b元字符用于在单词的开头或结尾找到匹配项。

var str = "This is a cool area!";

function containsWord(str, word) {
  return str.match(new RegExp("\\b" + word + "\\b")) != null;
}

console.info(containsWord(str, "is")); // return true
console.info(containsWord(str, "are")); // return false
console.info(containsWord(str, "area")); // return true