【问题标题】:How can i use jQuery's .find method with a regular expression as the parameter?如何使用带有正则表达式作为参数的 jQuery 的 .find 方法?
【发布时间】:2011-11-07 21:50:58
【问题描述】:

我有一个 xml,我想搜索“相似”的结果,类似于 LIKE 在 SQL 中所做的。 我想过做类似$(xml).find('regexHere') 的事情,但我不知道该怎么做。 如果这不是最好的方法,您能推荐其他方法吗?我需要搜索的数据在节点的参数范围内。

编辑

$(xml).find('[cityName=Rio de Janeiro]')给了我我正在搜索的节点,因为它是完全相同的字符串。但是,如果我搜索 Rio我没有得到任何结果,即使 Rio de Janeiro 和 Rio Claro 的节点有我正在寻找的字符串.

我尝试使用$(xml).find('[cityName|="Rio"]') 没有运气,没有出现任何结果,但如果我更改为Rio de Janeiro,我得到了我所需要的。

【问题讨论】:

  • 您只需要该节点内部的一些文本,还是 DOM 树的一个分支?
  • 理想情况下,xml 节点。我将在问题中添加一些代码,以澄清一下。
  • 如果你这样处理,我想你正在寻找[cityName*=rio]
  • @Bill Criswell 谢谢。这就像一个魅力。 :)
  • @Bill Criswell 不,它不像魅力。 :( 搜索带有空格的字符串时出错。

标签: javascript jquery xml regex search


【解决方案1】:

您可以用逗号分隔选择器,也可以使用.contents().filter()

【讨论】:

    【解决方案2】:

    要查找具有与某个正则表达式匹配的属性的所有元素,您可以使用.find("*") 选择所有元素,然后使用.filter(...) 删除任何不匹配的元素:

    例如,查找message 属性包含“hello world”的所有节点:

    var elements = $(xml).find("*").filter(function() {
        return /[Hh]ello [Ww]orld/.test($(this).attr("message"));
    });
    

    【讨论】:

    • 谢谢!这就是我的问题的重点,但我最终使用了@Bill Criswell 在评论中给出的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2015-02-21
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    相关资源
    最近更新 更多