jQuery在变量中搜索文本?

时间:2011-01-03 02:07:19

标签: javascript 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...

3 个答案:

答案 0 :(得分:12)

您可以使用.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's jQuery.trim() method修剪空白。

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

if( text === term )
    alert(term);

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

答案 1 :(得分:2)

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

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");
}

答案 2 :(得分:0)

“不起作用”是什么意思?

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