根据RegEx模式筛选结果

Filter results from RegEx pattern

本文关键字:结果 筛选 模式 RegEx 根据      更新时间:2023-09-26

我开始开发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 = /<a's+(?!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)。