如何在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语句-再次感谢。