Greasemonkey - regex在javascript中改变链接
Greasemonkey - regex in javascript to change links
我正在尝试使用greasemonkey更改网页的url。
修改对象示例:
<p><a rel="nofollow" href="http://site.com/goto/http_rapidshare_com_files_1401021221_SK_RG_X_FLAWL3SS_part01_rar/11609/107" rel="nofollow">http://rapidshare.com/files/1401021221/SK.RG.X.FLAWL3SS.part01.rar</a></p>
<p><a rel="nofollow" href="http://site.com/goto/http_rapidshare_com_files_3525685465_1_3_3_8_com_Parenthood_2010_S03E07_720p_HDTV_X264_DIMENSION_mkv/11598/51" rel="nofollow">http://rapidshare.com/files/3525685465/1-3-3-8.com_Parenthood.2010.S03E07.720p.HDTV.X264-DIMENSION.mkv</a></p>
GreaseMonkey脚本:
var els = document.getElementsByTagName("*");
for(var i = 0, l = els.length; i < l; i++) {
var el = els[i];
el.innerHTML = el.innerHTML.replace(/<p><a rel="nofollow" href=".*?" rel="nofollow">(.*?)<'/a><'/p>/img, '<p><a rel="nofollow" href="$1" rel="nofollow">$1</a><p>');
}
期望输出:
<p><a rel="nofollow" href="http://rapidshare.com/files/1401021221/SK.RG.X.FLAWL3SS.part01.rar" rel="nofollow">http://rapidshare.com/files/1401021221/SK.RG.X.FLAWL3SS.part01.rar</a></p>
<p><a rel="nofollow" href="http://rapidshare.com/files/3525685465/1-3-3-8.com_Parenthood.2010.S03E07.720p.HDTV.X264-DIMENSION.mkv" rel="nofollow">http://rapidshare.com/files/3525685465/1-3-3-8.com_Parenthood.2010.S03E07.720p.HDTV.X264-DIMENSION.mkv</a></p>
基本上,上面的正则表达式应该改变href (http://site.com/goto/http_rapidshare_com_files_1401021221_SK_RG_X_FLAWL3SS_part01_rar/11609/107)到url的可见文本(http://rapidshare.com/files/1401021221/SK.RG.X.FLAWL3SS.part01.rar),但由于某种原因,它不知道为什么?
谢谢大家!
问候,
Lob
更精确地定位链接。当试图解析HTML时,Regex是非常脆弱的;偶数顺序的微小变化或空白都可能破坏它。
幸运的是,在这种情况下似乎不需要regex。
这应该可以工作(未经测试):
var rapidShareLinks = document.querySelectorAll ("a[href*='rapidshare']");
for (var J = rapidShareLinks.length - 1; J >= 0; --J) {
var rsLink = rapidShareLinks[J];
rsLink.href = rsLink.textContent;
}
这是对第一期问题的回答
对于第二版-只需使用Brock的答案(selected)
这个应该可以工作:
var els = document.getElementsByTagName("A");
for(var i = 0, l = els.length; i < l; i++) {
var el = els[i];
el.href = el.href.replace(/http:'/'/(.)+?'/(.)+?'//, '').replace(/'/.+/g, '').replace('http_', 'http://').replace(/_files_('d+?)_/, '/files/$1/').replace(/_/g, '.');
}
请注意,我只匹配<a>
标记,并直接解析它们的href
属性。
另外,因为它是一个示例脚本,所以它不关心页面上的其他链接,这些链接可能会在处理过程中被破坏;)
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 鼠标光标改变Javascript链接的DIV
- 全球不断改变价值.可能通过引用或范围问题传递?帮助!链接中的详细示例
- 有条件地改变Angular中按钮中的链接
- 是否有一种方法来改变所有的网页链接url根据浏览器的url
- 如何通过使用javascript点击链接来改变模态消息
- 是否有可能改变现有图形的节点/链接的属性?比如我想改变链接/节点的颜色
- 如何改变URL(哈希),当用户滚动或点击链接与jquery历史插件
- JS根据屏幕大小改变链接
- 如何改变悬停时另一个链接的颜色
- 如何使链接在点击时改变段落的内容?返回false,不工作
- 我如何使用图像链接提交表单,以改变与JS(没有JQuery)的表单动作
- Greasemonkey - regex在javascript中改变链接
- 如何动态地改变链接的顺序
- 如何改变链接时,点击/复制像facebook Messenger聊天
- 当鼠标悬停在父列表项上时改变链接颜色时的奇怪行为
- 如何改变链接的颜色时,悬停或点击lavalamp jquery菜单
- 是否可以在链接中添加书签让它“改变”?链接目标
- 点击时改变链接的href属性
- 如何改变链接颜色与每个会话