【问题标题】:jQuery Search for Text in a Variable?jQuery在变量中搜索文本?
【发布时间】:2011-01-03 02:07:19
【问题描述】:

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

$.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...

【问题讨论】:

  • 当你做alert(this.text)时它会说什么?

标签: javascript jquery


【解决方案1】:

您可以改用.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 记录到控制台以查看它是否是您期望的值。

【讨论】:

  • 谢谢,所以我正在寻找与搜索词完全匹配的内容,但 === 比较似乎不起作用。但是,使用 indexOf 可以。为什么会这样?
  • @thatryan:这取决于this.text 的值。在不知道data.results 持有什么的情况下,我不能肯定地说,但我猜也许有一些空白需要修剪。 indexOf() 将定位字符串中的任何部分匹配,因此它有时可能会给出误报,而 === 将失败,如果有任何差异,包括空格。我更新了我的答案。
  • 我做了帕特里克,谢谢。对不起,我以为我已经检查了它的答案!感谢您的所有帮助!
【解决方案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");
}

【讨论】:

    【解决方案3】:

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

    请注意,您应该在 if 语句中使用大括号 ({})。有些浏览器会让您错过它们,但您应该将它们包括在内以确保正确并支持所有内容。

    【讨论】:

    • 哦,您在初始化变量 test 的行上缺少一个分号。
    • “某些浏览器会允许你...” 语言规范实际上允许排除它们,但包含它们肯定是一种好习惯。
    • @patrick dw:啊,哎呀!感谢那。我承认我一直只是假设;尽管如此,像 IE6 这样广泛使用的浏览器不会对 IME 感到满意,所以最好保留它们。
    猜你喜欢
    • 1970-01-01
    • 2012-08-11
    • 2011-08-09
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2012-11-15
    • 2019-09-13
    相关资源
    最近更新 更多