如何在javascript中搜索字符串中的单词(而不仅仅是子字符串)?

如何在javascript中搜索字符串中的单词(而不仅仅是子字符串)?,javascript,regex,string,substring,indexof,Javascript,Regex,String,Substring,Indexof,我熟悉在字符串中搜索给定的子字符串: if (string.indexOf(substring) > -1) { var containsSubstring = true; } 但是,如果子字符串需要是一个单词怎么办 一个词: 它必须在字符串的开头,后面有空格;或 在字符串的末尾,前面有一个空格;或 在绳子的中间,两边各有一个空格 如果我正在查找子字符串fox: the quick brown fox // matches fox jumps over the lazy do

我熟悉在字符串中搜索给定的子字符串:

if (string.indexOf(substring) > -1) {
    var containsSubstring = true;
}
但是,如果子字符串需要是一个单词怎么办

一个词:

  • 它必须在字符串的开头,后面有空格;或
  • 在字符串的末尾,前面有一个空格;或
  • 在绳子的中间,两边各有一个空格
如果我正在查找子字符串
fox

the quick brown fox // matches
fox jumps over the lazy dog // matches
quick brown fox jumps over // matches


the quick brownfox // does not match
foxjumps over the lazy dog // does not match
quick brownfox jumps over // does not match
quick brown foxjumps over // does not match
quick brownfoxjumps over // does not match

使用
indexOf
是否有任何方法实现上述结果,或者我是否需要使用正则表达式?

您可以通过检查它是否位于字符串开头,后面是否有空格,或者是否位于字符串末尾,前面是否有空格来实现此目的,或者在字符串的中间,前后有一个空间。

< p>可以使用该方法。< /P>
var string=“foxs sas”
var search=string.search(/\bfox\b/)>=0?真:假;

console.log(搜索)
您是否尝试过使用具有单词边界的正则表达式:

if (/(\bfox\b)/g.test(substring)) {
    var containsSubstring = true;
}

在这种情况下,子字符串和单词之间有什么区别?您考虑过使用正则表达式吗?或者jQuery Regex可能是最干净的,但是如果您检查所有可能重复的代码,那么使用空格就可以了对不起,各位,我认为一个单词(如Regex
\w
)是不言自明的,但事实并非如此,所以我在上面添加了一个解释,解释了我所说的单词的含义。显然,我不仅仅是在寻找字符串中的子字符串-我确实是在解释我熟悉这样一个过程后开始提问的;-)谢谢你,弗兰克。是的,我知道我需要做什么。我只是不明白如何使用
indexOf()
来实现这一点。所以。。。事实证明,虽然
indexOf()
可以用于普通子字符串,但
search()
是用于正则表达式的方法。尽管如此,在这个特定的实例中,@combatc2上面提到的
test()
方法是所有方法中最好的解决方案。每当子字符串
fox
出现在字符串中时,上述方法返回
true
——即使子字符串
fox
不是单词。例如
brownfoxjumps
brownfoxjumps
brownfoxjumps
仍将返回
true
。请再次查看@鲁宁如果这是正确的答案,请你标记一下,我需要声誉:)干得好,@combatc2-谢谢。我已经离开了我的笔记本电脑,否则我早就把它标记好了。我把正则表达式放在它自己的变量中,把它分开:
var pattern=/\bfox\b/g;var字符串='thequickbrownfox';console.log(pattern.test(string))
.test()
非常完美,因为它返回一个布尔值而不需要if语句-再次感谢。