使用JS或jQuery替换部分URL

时间:2012-05-14 23:53:30

标签: javascript jquery regex

好的,我不确定我有什么问题,但我正在尝试查找并替换多个网址的一部分。

基本上,我有一些动态添加到我网站的网址。所有都有一类'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'>

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

2 个答案:

答案 0 :(得分:2)

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

这是您的代码应该是:

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

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

答案 1 :(得分: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];
});