0

好的,我不确定我出了什么问题,但我正在尝试查找和替换多个 URL 的一部分。

基本上,我有一些被动态添加到我的网站的 URL。都有一类“newsLink”,一些链接正在拉起 google.docs 查看器,我需要删除它。

到目前为止,这是我的代码:

$('a.newsLink').each(function(){
var lnk = $('a.newsLink').attr();
var re = new RegExp("http://docs.google.com/viewer?url=","g");
lnk.replace(re, "");
});

链接看起来像:

<a href='http://docs.google.com/viewer?url=myHomePage.pdf' class='newsLink' target='_blank'>

我想删除第一部分,使链接看起来像:

<a href='http://myHomePage.pdf' class='newsLink' target='_blank'>

无论如何,到目前为止没有运气......任何人都可以帮忙。

4

2 回答 2

2

首先,您将再次在循环中获取所有链接。然后,您尝试获取一个属性,但没有说是哪个。最后,您尝试使用replace而不将返回值分配给任何东西。

这就是你的代码应该是:

$('a.newsLink').each(function(){
    var lnk = this.href;
    this.href = lnk.replace("http://docs.google.com/viewer?url=", "");
});

注意:我假设您希望链接成为 eg myHomePage.pdf,没有协议。

于 2012-05-14T23:57:53.750 回答
1

你想要的正则表达式是。

http:\/\/docs\.google\.com\/viewer\?url=(.+)

首先,这会转义所有正则表达式字符。在这种情况下\,.?。我们正在使用与每个字符 ( (.+)) 匹配的组来捕获文档。

所以到目前为止,我们的代码看起来像这样。

$('a.newsLink').each(function(){
    var lnk = this.href;
    var re = /http:\/\/docs\.google\.com\/viewer\?url=(.+)/g
    this.href = lnk.replace(re, "");
});

现在我们得到这样的组。

var match = re.exec(lnk);

这将返回匹配的数组。我们的文档现在存储在match[1]. 这样我们的最终代码就出来了。

$('a.newsLink').each(function(){
    var lnk = this.href;
    var re = /http:\/\/docs\.google\.com\/viewer\?url=(.+)/g
    this.href = (re.exec(lnk))[1];
});
于 2012-05-15T00:03:52.667 回答