关于Javascript/JQuery:Javascript/JQuery-如何检查字符串是否包含特定单词

JavaScript/jQuery - How to check if a string contain specific words

1
2
3
4
$a = 'how are you';
if (strpos($a,'are') !== false) {
    echo 'true';
}

在PHP中,我们可以使用上面的代码检查字符串是否包含特定的单词,但是如何在javascript/jquery中执行相同的函数?


您可以为此使用indexof

1
2
3
4
5
6
var a = 'how are you';
if (a.indexOf('are') > -1) {
  return true;
} else {
  return false;
}

编辑:这是一个老的答案,它每隔一段时间就会得到一次投票,所以我想我应该澄清一下,在上面的代码中,不需要if子句,因为表达式本身是一个布尔值。这里有一个更好的版本,你应该使用,

1
2
var a = 'how are you';
return a.indexOf('are') > -1;

ecmascript2016中的更新:

1
2
var a = 'how are you';
return a.includes('are');  //true


不应将indexOf用于此目的。

正确的功能:

1
2
3
4
5
function wordInString(s, word){
  return new RegExp( '\\b' + word + '\\b', 'i').test(s);
}

wordInString('did you, or did you not, get why?', 'you')  // true

这将找到一个单词,一个真正的单词,而不仅仅是该单词的字母在字符串中的某个位置。


如果您正在寻找准确的单词,并且不希望它与"噩梦"(这可能是您需要的)等匹配,则可以使用regex:

1
2
3
4
5
/\bare\b/gi

\b = word boundary
g = global
i = case insensitive (if needed)

如果您只想找到字符"are",那么使用indexOf

如果要匹配任意单词,必须基于单词字符串编程构造regexp(正则表达式)对象本身,并使用test


您正在查找indexof函数:

1
if (str.indexOf("are") >= 0){//Do stuff}

您可能需要在JS中使用include方法。

1
2
3
var sentence ="This is my line";
console.log(sentence.includes("my"));
//returns true if substring is present.

附言:include区分大小写。


本遗嘱

1
/\bword\b/.test("Thisword is not valid");

返回false,此时

1
/\bword\b/.test("This word is valid");

将返回true


一种使用regex match()方法的简单方法:

例如

1
2
3
4
5
6
7
8
9
10
11
var str ="Hi, Its stacks over flow and stackoverflow Rocks."

// It will check word from beginning to the end of the string

if(str.match(/(^|\W)stack($|\W)/)) {

        alert('Word Match');
}else {

        alert('Word not found');
}

检查小提琴

注:为了增加区分大小写,用/(^|\W)stack($|\W)/i更新regex。

谢谢


1
2
3
4
5
var str1 ="STACKOVERFLOW";
var str2 ="OVER";
if(str1.indexOf(str2) != -1){
    console.log(str2 +" found");
}