我有一个包含一些文本的变量,一些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...
答案 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
语句。有些浏览器会让你错过它们,但是你应该把它们包括在内并且支持所有内容。