jQuery在变量中搜索文本?

我有一个包含一些文本的变量,一些html,基本上可以是一个字符串。 我需要在变量中搜索特定字符串,以便在包含该变量时以不同方式处理该变量。 这是我想要做的事情片段,显然不起作用:)

$.each(data.results, function(i, results) { var text = this.text var pattern = new RegExp("^[SEARCHTERM]$"); if(pattern.test( text ) ) alert(text); //was hoping this would alert the SEARCHTERM if found... 

您可以使用.indexOf()来执行搜索。

如果找不到该字符串,则返回-1 。 如果找到,它将返回它所在的第一个从零开始的索引

 var text = this.text; var term = "SEARCHTERM"; if( text.indexOf( term ) != -1 ) alert(term); 

如果你希望完全匹配,你使用^$似乎暗示,你可以只做一个===比较。

 var text = this.text; var term = "SEARCHTERM"; if( text === term ) alert(term); 

编辑:根据您的评论,您想要完全匹配,但===不起作用,而indexOf()是。 如果有一些需要修剪的空白,有时会出现这种情况。

尝试使用jQuery的jQuery.trim()方法修剪空白。

 var text = $.trim( this.text ); var term = "SEARCHTERM"; if( text === term ) alert(term); 

如果这不起作用,我建议将this.text记录到控制台,看看它是否是您期望的值。

如果您使用正则表达式搜索子字符串,您可以找到如下匹配:

 var match = text.match(pattern); if(match) { alert(match[0]); } 

有关更多信息,请参阅.match()的文档。

请注意,如果您尝试搜索字符串"[SEARCHTERM]" (包含括号的搜索词),则搜索方法将无效,因为括号在正则表达式中具有特殊含义。 相反,使用.indexOf()

 var index = text.indexOf("[SEARCHTERM]"); if(index != -1) { alert("Search term found"); } 

但是,如果您只是想找到完全匹配(除了搜索字符在您正在检查的字符串中),您应该只比较字符串:

 if(text == "[SEARCHTERM]") { alert("Search term found"); } 

什么“不起作用”在这里意味着什么?

请注意,您应该对if语句使用大括号( {} )。 有些浏览器会让你错过它们但是你应该把它们包括在内并且支持所有内容。