Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Greasemonkey-javascript中的regex用于更改链接_Javascript_Regex_Url_Greasemonkey_Replace - Fatal编程技术网

Greasemonkey-javascript中的regex用于更改链接

Greasemonkey-javascript中的regex用于更改链接,javascript,regex,url,greasemonkey,replace,Javascript,Regex,Url,Greasemonkey,Replace,我正在尝试使用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.par

我正在尝试使用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>
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>

GreaseMonkey脚本:

<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>
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>
var els=document.getElementsByTagName(“*”);
对于(变量i=0,l=els.length;i
所需输出:

<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>
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

这是对第一版问题的回答

第二版-只需使用布罗克的答案(已选)


这应该起作用:

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, '.');
}
var els=document.getElementsByTagName(“A”);
对于(变量i=0,l=els.length;i
注意,我只匹配
标记,并直接解析它们的
href
属性

另外,因为它是一个示例脚本,所以它不关心页面上的其他链接,这些链接可能会在过程中被破坏;)

这是对第一版问题的回答

第二版-只需使用布罗克的答案(已选)


这应该起作用:

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, '.');
}
var els=document.getElementsByTagName(“A”);
对于(变量i=0,l=els.length;i
注意,我只匹配
标记,并直接解析它们的
href
属性


另外,因为它是一个示例脚本,所以它不关心页面上的其他链接,这些链接可能会在过程中被破坏;)

更精确地定位链接。当试图解析HTML时,正则表达式非常脆弱;即使顺序或空格稍有变化,也会破坏它

幸运的是,在这种情况下似乎不需要正则表达式

这应该有效(未经测试):


更精确地定位链接。当试图解析HTML时,正则表达式非常脆弱;即使顺序或空格稍有变化,也会破坏它

幸运的是,在这种情况下似乎不需要正则表达式

这应该有效(未经测试):


谢谢你的代码,但我不能正确处理所有链接,为了正常工作,它必须获取url的可见部分并将其设置为href。我用一个新的链接更新了这个问题,但这个链接不起作用。谢谢你的代码,但我不能正确地处理所有链接,为了有效,我必须获取url的可见部分并将其设置为href。我用一个新的链接更新了这个问题,但这个链接不起作用。@Brock,lol。在问题中没有看到有效的链接已经出现在页面上:D@Brock,lol。在问题中没有看到,页面上已经存在有效链接:D