【问题标题】:find url in html using regex使用正则表达式在 html 中查找 url
【发布时间】:2016-02-12 10:39:30
【问题描述】:

我知道网上有很多关于它的东西,但我正在努力解决一个我没有遇到过任何人询问它的特定问题。

所以我构建了这个正则表达式,用于在 href/src 属性中搜索 url:

\s(?:href|src)\s*=\s*(["']??)\s*([^"']+)(?:\s*\1)[^>]*>

问题是它也匹配这样的东西:

var a="";
a += "<a  href=\""+d.y+"\">";

我试图想出一个解决方案来解决如何不得到这些误报,但我真的做不到,所以我在这里寻求帮助。

请注意,我不是在寻找解析 dom 的目的,只是为了做到这一点,只有正则表达式

【问题讨论】:

  • 你在学习正则表达式吗?我认为您还应该学习何时使用以及何时避免使用它们。你有 HTML,使用 DOM 解析器从 HTML 文档中获取数据。
  • @WiktorStribiżew 我正在使用正则表达式,因为我正在使用 href/src 属性之外的其他正则表达式找到更多 url,否则无法使用 dom 解析器找到,这只是我打算放入的正则表达式在将从 html/css/js/other 文件中获取的 'discover' 正则表达式 url 数组中。这就是我使用正则表达式的原因
  • 那么请在问题中说清楚,你在做什么,使用什么工具,而不仅仅是在href/src属性中搜索url
  • @WiktorStribiżew 它只会增加问题的噪音,我不会寻求有关如何制作其他正则表达式来查找其他网址的帮助,我要问的只是关于特定问题的有针对性的问题正则表达式以及如何不从中得到误报。最终目标与问题无关
  • 只是向您展示如何使用 dom 操作获取 src 和 href:window.onload=function() { var srcs = document.querySelectorAll('[src]'); var hrefs = document.querySelectorAll('[href]'); console.log(srcs,hrefs) } jsfiddle.net/mplungjan/vdbvtsy4

标签: javascript html regex url uri


【解决方案1】:

我最终重写了正则表达式,使其期望 0 个或多个属性后跟 src/href 属性,因此像我的问题中的误报不会计算在内。

这是我的新正则表达式:

\s(?:src|href)\s*=\s*(?:["']?\s*([^"'>]+)\s*["']?)(?:\s+[^"'>\s]+(?:\s*=\s*["']?[^"'>]*["']?)?)*\s*\/?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-01
    • 2016-12-31
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2011-07-24
    • 2013-11-05
    • 2013-11-10
    相关资源
    最近更新 更多