如何在正则表达式中选择所有不以两个“ ..”(点)开头的href

时间:2019-04-24 10:47:11

标签: javascript regex

我正在尝试使用正则表达式在html文档中选择特定行。 我正在寻找选择以<link开头且在href中不包含字符../

的行

这是我拥有的html的一部分

<script type="text/javascript" src="/js/IP_Master_PT_RTL.master.js"></script>
<link rel="stylesheet" type="text/css" href="../global.design-editor.com/v8/main.min1024.css?v=_STAGING-Publisher_20180327.1" />
<link rel="stylesheet" type="text/css" href="../fonts.googleapis.com/earlyaccess/alefhebrew.css" />
<link rel="stylesheet" type="text/css" href="ad-systems368c.css?v=4701716615" />

这是我到目前为止所做的: <link[^\*]*?href=[^\*]*?"[^..]* 我越来越近了,但我想选择整个标签,而没有选择其他标签。

我刚刚开始学习正则表达式,所以我对此很陌生。

3 个答案:

答案 0 :(得分:3)

使用浏览器中的JavaScript,您只需查找所有<link>元素,然后根据href属性对其进行过滤

let allLinks = document.querySelectorAll('link');

let filteredLinks = Array.from(allLinks)
  .filter(el => el.getAttribute("href").startsWith("../") == false);

console.log(filteredLinks);
<script type="text/javascript" src="/js/IP_Master_PT_RTL.master.js"></script>
<link rel="stylesheet" type="text/css" href="../global.design-editor.com/v8/main.min1024.css?v=_STAGING-Publisher_20180327.1" />
<link rel="stylesheet" type="text/css" href="../fonts.googleapis.com/earlyaccess/alefhebrew.css" />
<link rel="stylesheet" type="text/css" href="ad-systems368c.css?v=4701716615" />

答案 1 :(得分:0)

const links = [...document.getElementsByTagName('link')];
const newLinks = links.filter(link => !link.outerHTML.includes('../'))
console.log(newLinks)

答案 2 :(得分:-2)

也许他/她正在分析文件,所以他/她需要ragex。 所以这是我的解决方案...

我也是ragex的新手,但这可能对您有用。

<link\s*.*href\=\"[^(\.\.\/)].*\".*/>

还要检查this ragex builder,玩得开心。