【问题标题】:Retrieving html tag values with regex使用正则表达式检索 html 标记值
【发布时间】:2015-08-13 20:59:40
【问题描述】:

我必须尝试使用​​正则表达式从这段 HTML 代码中检索“Charlotte”:

<a href="/anime/28999/Charlotte" target="_blank" class="animetitle" title="Anime Information">
    <span>Charlotte</span>
</a>

问题是,对于不同的头衔,我每次都需要从班级中取出“Charlotte”这个名字。无论是来自 href 属性还是 span 标签。

我试过了:

<span(?:[^>]+class=\"(.*?)\"[^>]*)?>(.*?)<\/span>  

但这仅适用于它找到的第一个结果。在这个阶段我不能使用解析器,所以如果可能的话,任何帮助都将非常感激。

旁注 - 我正在尝试在 JavaScript 下使用这个正则表达式。

编辑:正在通过 XMLHttpRequest 检索 html

【问题讨论】:

  • 为什么不使用 javascript 获取 href 属性并对其执行正则表达式?
  • 试图从 href 属性或 span 中获取 Charlotte??
  • 只要我能把关键词夏洛特拿出来,就可以了
  • 正如OP中所说,除了Charlotte之外,可能有多个不同标题的行,这就是为什么我需要按类/标签获取信息

标签: javascript regex


【解决方案1】:

免责声明:我实际上并不是在回答您的问题,而是在建议一种不同的方法。

尝试使用 JavaScript 选择元素,然后读取属性本身。它既安全又快捷。而且它也可能对未来的变化更加强大。

var elements = document.getElementsByClassName('animetitle');
var element = elements[0]; // this would probably be in a loop
element.textContent // <-- this is what you want

【讨论】:

  • 如果投反对票的人能解释他/她投反对票的原因会很好吗? (“不回答”的意思是:我不给你一个 regex 即使你要求一个。仍然:我认为这是解决你问题的最佳方法。)
  • 赞成,至少你是有帮助的。我更新了我的 OP,但我不确定这是否适用于 XMLHttpRequest?目前远离我的机器。
  • 根据MDNXMLHttpRequest可以返回一个Document-Object。在这种情况下,您的 xhr.result 实际上应该有一个 getElementsByClassName 方法。
  • 找到了:如果您将xhr.responseType 设置为"document",应该可以直接执行此操作。否则:如果你的项目中有 jQuery,你总是可以使用它们的选择器来代替。
  • 选择器是我更喜欢的,但不幸的是不能使用它们。如果可能的话,你能更新你的答案吗?我明天回来看看这个方法怎么样!
【解决方案2】:

编辑

因为你的评论:

无法使用 jquery,我正在使用 XMLHttpRequest

答案的重点不是推荐特定的库。其目的是表明最好以原生方式遍历 DOM,而不是尝试使用正则表达式“解析”HTML,这通常最终效果不佳(参见 this famous answer on SO)。

我假设您将获得该 HTML 作为您的 XHR 响应。所以,你可以简单地创建一个 DOM 节点,遍历它,然后拉出文本(参见this answer for an explanation):

var div = document.createElement('div');
div.innerHTML = response; // the response of your XHR

然后只需遍历你创建的 DOM 节点:

div.getElementsByClassName('.animetitle')[0].textContent; // Charlotte

原答案

var href = $('.animetitle').attr('href');
var name = href.split('/').pop(); // => Charlotte

【讨论】:

  • 注意:这个解决方案需要 jQuery。
  • 另外,它需要href,我认为从原始帖子中,他的意思是包含跨度中的文本。
  • 不能用jquery,我用的是XMLHttpRequest
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
  • 2010-12-10
  • 2012-04-04
  • 1970-01-01
相关资源
最近更新 更多