【问题标题】:Regex to find all anchor tag links [duplicate]正则表达式查找所有锚标记链接[重复]
【发布时间】:2019-01-16 02:04:04
【问题描述】:

为了从一开始就解决这个问题,我已经阅读了那个问题,我完全明白这通常是一个坏主意,还有其他更好的方法。

但是,对于我非常简单的用例,即检索页面上的所有锚标记链接,我认为以下正则表达式就足够了,并且比完整的 HTML 解析器更简单、更快:

href="(.+)"

现在,我是否忽略了一些明显的致命缺陷,或者这对于我非常简单的用例来说是一个足够好的选择?

【问题讨论】:

  • 好吧,document.querySelectorAll('a') 会抓取链接,然后很简单地循环它们并获取它们的href
  • 还有here we go again...
  • <script>href="foo"</script> 现在怎么办?
  • 你可能还想改写你的标题,因为你实际上并不解析 HTML,而是寻找一个字符串组合
  • @Dinei 这很公平。

标签: html regex html-parsing


【解决方案1】:

回答:不,比那要复杂一点。

为什么?这可能会比锚标签链接更多,因为href 不仅仅用于锚标签。有关示例,请参阅this page

也可能有带有href 属性的标签在 HTML 中被注释掉。

此外,它可以在 JavaScript 字符串中,用于动态添加到页面的元素,例如

var newElement = '<a href="www.example.com">My Page</a>

您需要考虑一些怪癖,例如 LGSon 和 Daniel Gale 等人在 cmets 中提到的怪癖,但这可能足以回答您的问题 - 不,没那么简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多