在字符串中搜索整个单词

时间:2013-09-11 12:03:25

标签: javascript

我正在寻找一个用javascript编写的函数(不是在jquery中),如果给定的单词完全匹配(不应区分大小写),它将返回true。

像..

var  searchOnstring=" Hi, how are doing?"

   if( searchText=='ho'){
    //output : false
   }

   if( searchText=='How'){
    //output : true
   }

感谢。

4 个答案:

答案 0 :(得分:15)

您可以使用正则表达式:

\bhow\b

示例:

/\bhow\b/i.test(searchOnstring);

如果你想要一个可变的单词(例如来自用户输入),你必须注意不要包含特殊的RegExp字符。

你必须逃避它们,例如使用MDN 中提供的功能(向下滚动一下)

function escapeRegExp(string){
  return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}

var regex = '\\b';
regex += escapeRegExp(yourDynamicString);
regex += '\\b';

new RegExp(regex, "i").test(searchOnstring);

答案 1 :(得分:2)

这是一个返回true的函数,searchText包含在searchOnString中,忽略大小写:

function isMatch(searchOnString, searchText) {
  searchText = searchText.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
  return searchOnString.match(new RegExp("\\b"+searchText+"\\b", "i")) != null;
}

更新,如上所述你应该转义输入,我正在使用https://stackoverflow.com/a/3561711/241294的转义函数。

答案 2 :(得分:-2)

这样的事情会起作用:

if(/\show\s/i.test(searchOnstring)){
    alert("Found how");
}

More on the test() method

答案 3 :(得分:-3)

试试这个:

var s = 'string to check', ss= 'to';
if(s.indexOf(ss) != -1){
  //output : true
}