我开始开发Chrome扩展,当用户访问网页时,它会在某些表达式上添加链接。这是我迄今为止一直在使用的代码。
var input = document.body.innerHTML;
var pattern = /(?!<a[^>]*?>)(s|>)(.(gitignore|travis.yml)|package.json)(?![^<]*?</a>)b/gm;
document.body.innerHTML = input.replace(pattern,"$1<a href='$2.html'>$2</a>");
链接文件是我正在进行的文档项目的一部分。由于我想避免使用隐藏文件(例如.gitignore.html
),我希望在$2
中过滤实际链接的点,但在链接文本中保留完整的表达式。
结果应该是这样的:
<a href="gitignore.html">.gitignore</a>
您可以得到以下正则表达式:
var input = document.body.innerHTML;
var regex = /<as+(?!href="(?:gitignore|htaccess|htpasswd).html")[^>]*?>(?:.(gitignore|htpasswd|htaccess))</a>/gm;
var output = input.replace(regex,"<a href='$1.html'>.$1</a>");
请在此处查看工作演示:https://regex101.com/r/aT7tA3/2
提示:
它不保留任何类、属性、rel。如果您需要这些,可以考虑使用解析器或像样的JS库(例如jQuery)。