6

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

喜欢...

var searchOnstring = " Hi, how are doing?"

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

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

4 回答 4

20

您可以使用正则表达式:

\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);
于 2013-09-11T12:06:41.607 回答
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的转义功能。

于 2013-09-11T12:08:15.467 回答
-2

像这样的东西会起作用:

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

更多关于 test() 方法

于 2013-09-11T12:09:19.597 回答
-5

尝试这个:

var s = 'string to check', ss= 'to';
if(s.indexOf(ss) != -1){
  //output : true
}
于 2013-09-11T12:07:55.373 回答