Javascript 使用正则表达式在html中查找url
我知道网上有很多关于它的东西,但我正在努力克服一个具体的问题,我没有遇到任何人问起这个问题 因此,我构建了一个正则表达式,用于搜索href/src属性中的URL:Javascript 使用正则表达式在html中查找url,javascript,html,regex,url,uri,Javascript,Html,Regex,Url,Uri,我知道网上有很多关于它的东西,但我正在努力克服一个具体的问题,我没有遇到任何人问起这个问题 因此,我构建了一个正则表达式,用于搜索href/src属性中的URL: \s(?:href|src)\s*=\s*(["']??)\s*([^"']+)(?:\s*\1)[^>]*> 问题是它也在匹配这样的东西: var a=""; a += "<a href=\""+d.y+"\">"; var a=”“; a+=”; 我试着想出一个解决办法,如何避免这些误报,但我真的做
\s(?:href|src)\s*=\s*(["']??)\s*([^"']+)(?:\s*\1)[^>]*>
问题是它也在匹配这样的东西:
var a="";
a += "<a href=\""+d.y+"\">";
var a=”“;
a+=”;
我试着想出一个解决办法,如何避免这些误报,但我真的做不到,所以我在这里寻求帮助
请注意,我并不是为了解析dom而寻找它,只有regex我最终重写了regex,使它期望0个或更多属性后跟src/href属性,这样像我问题中的错误肯定就不算了 这是我的新正则表达式:
\s(?:src|href)\s*=\s*(?:["']?\s*([^"'>]+)\s*["']?)(?:\s+[^"'>\s]+(?:\s*=\s*["']?[^"'>]*["']?)?)*\s*\/?>
最后,我重写了正则表达式,使其预期0个或更多属性后跟src/href属性,这样像我的问题中那样的误报就不算了 这是我的新正则表达式:
\s(?:src|href)\s*=\s*(?:["']?\s*([^"'>]+)\s*["']?)(?:\s+[^"'>\s]+(?:\s*=\s*["']?[^"'>]*["']?)?)*\s*\/?>
你在学习正则表达式吗?我认为你也应该学会什么时候使用,什么时候避免它们。如果您有HTML,请使用DOM解析器从HTML文档中获取数据。@WiktorStribiżew我使用正则表达式是因为我在href/src属性之外找到了更多其他正则表达式的URL,否则无法使用DOM解析器找到,这只是一个正则表达式,我计划将它放入一个“discover”正则表达式的URL数组中,这些URL将从html/css/js/其他文件中获取。这就是我使用regexThen的原因。请在问题中明确说明,您在做什么,使用什么工具,而不仅仅是在href/src中搜索URLattributes@WiktorStribiżew这只会增加问题的噪音,我不寻求帮助如何使其他正则表达式用于查找其他URL,我所要问的是关于特定正则表达式的有针对性的问题,以及如何避免从中得到误报。最终目标与这个问题完全无关,只是向您展示如何使用dom操作获取src和hrefs:
window.onload=function(){var srcs=document.queryselectoral('[src]');var hrefs=document.queryselectoral('[href]');console.log(srcs,hrefs)}
您在学习正则表达式吗?我认为你也应该学会什么时候使用,什么时候避免它们。如果您有HTML,请使用DOM解析器从HTML文档中获取数据。@WiktorStribiżew我使用正则表达式是因为我在href/src属性之外找到了更多其他正则表达式的URL,否则无法使用DOM解析器找到,这只是一个正则表达式,我计划将它放入一个“discover”正则表达式的URL数组中,这些URL将从html/css/js/其他文件中获取。这就是我使用regexThen的原因。请在问题中明确说明,您在做什么,使用什么工具,而不仅仅是在href/src中搜索URLattributes@WiktorStribiżew这只会增加问题的噪音,我不寻求帮助如何使其他正则表达式用于查找其他URL,我所要问的是关于特定正则表达式的有针对性的问题,以及如何避免从中得到误报。最终目标与这个问题完全无关,只是向您展示如何使用dom操作获取src和hrefs:window.onload=function(){var srcs=document.queryselectoral('[src]');var hrefs=document.queryselectoral('[href]');console.log(srcs,hrefs)}