Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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
如何用JavaScript或jQuery和正则表达式重写链接?_Javascript_Regex_Greasemonkey - Fatal编程技术网

如何用JavaScript或jQuery和正则表达式重写链接?

如何用JavaScript或jQuery和正则表达式重写链接?,javascript,regex,greasemonkey,Javascript,Regex,Greasemonkey,正在查看修改Yahoo Answers链接以删除某些部分,只保存qid,并将索引替换为answer 因此: http://answers.yahoo.com/question/index;_ylt=AhT5ZZwbMiGWdQZDSxD1ML305nNG;_ylv=3?qid=20121004094847AAjekoj 变成这样: http://answers.yahoo.com/question/answer?qid=20121004094847AAjekoj 我知道有很多方法可以重写.h

正在查看修改Yahoo Answers链接以删除某些部分,只保存
qid
,并将
索引替换为
answer

因此:

http://answers.yahoo.com/question/index;_ylt=AhT5ZZwbMiGWdQZDSxD1ML305nNG;_ylv=3?qid=20121004094847AAjekoj
变成这样:

http://answers.yahoo.com/question/answer?qid=20121004094847AAjekoj

我知道有很多方法可以重写
.htaccess
的链接,但在这种情况下,它需要一个Greasemonkey脚本,因为任务将在我访问的网站上完成,而不是在我的网站上完成

这里需要的模式是:

/(http:\/\/answers.yahoo.com\/questions\/)index.*(?qid=.*)$/i
你可以用这个来代替它:

/$1answer$2/

不过,我对Greasemonkey了解不多,所以我不能给你更多。希望有人对Greasemonkey有更多的了解,并提供更好的答案。

一般来说,这应该可以做到(完成GM脚本)):

/==UserScript==
//@name\u替换雅虎答案链接
//@包括http://answers.yahoo.com/*
//@需要http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
//@grant GM_addStyle
//==/UserScript==
/*-需要@grant指令来解决引入的设计变更
在GM 1.0中。它会恢复沙箱。
*/
var targLinks=$(“a[href*='question/index']);
targetlinks.each(函数(){
if(/\bqid=\w+/i.test(this.href)){
var newHref=this.href
var newPath=this.pathname.replace(/\/question\/index.+$/,“/question/answer”);
var newURL=this.protocol+“/”
+这位是主持人
+新路径
+这是搜索
+这是哈什
;
this.href=newURL;
}
} );
更换

/(http:\/\/answers\.yahoo\.com\/question)\/index.+[?&]qid=([^&#]+)/g


它总是一个级别的子目录,还是会有更多的子目录?它总是会是同一个域名,但有不止一个吗?有没有你不想弄乱的链接?都是同一个目录。我不介意再加一句,这是针对雅虎答案的——当你看到一个问题列表时,我只想点击它,让它把我带到答案框。所以,会变成等等。所以有一个子目录(
question
)。这意味着安德鲁·科扎克的答案行不通。将来,尽可能多地提供信息:给出确切的URL类型可以让我们根据需要进行调整。@DanielDoes:Greasemonkey可能使用
\1
\2
而不是
$1
$2
,如果这不起作用的话,还有一件事要尝试。No Greasemonkey只是一个JS,打开了一些特权。正则表达式是一样的(
$1
,等等)。谢谢,它工作得很好。我一定要在博客上写下这一点,当然我把它记回了这一页。@DanielDoes:我个人怀疑布罗卡达姆的答案会对你有更多帮助,但无论如何,你应该为未来的用户检查对你帮助最大的答案,这样任何有同样问题的人都可以轻松找到最好的答案。也鼓励对任何有帮助或有用的答案进行投票。有趣的是,你需要一些声誉才能首先投票。哦,我想这是有道理的。不希望愚蠢的用户有太大的影响力。
索引+$
不包括Daniel想要保留的
qid
吗?不,因为它在
路径名上运行。啊,是的,那就可以了+1'd
[?&]
是一个很好的触感,但它是
qid
而不是
quid
"$1/answer?quid=$2"