好的,我不确定我有什么问题,但我正在尝试查找并替换多个网址的一部分。
基本上,我有一些动态添加到我网站的网址。所有都有一类'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'>
无论如何,到目前为止没有运气......任何人都可以帮忙。
答案 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];
});