Javascript 使用JS或jQuery替换URL的一部分

Javascript 使用JS或jQuery替换URL的一部分,javascript,jquery,regex,Javascript,Jquery,Regex,好的,我不确定我到底出了什么问题,但我正在尝试查找并替换多个URL的一部分 基本上,我有一些URL是动态添加到我的网站。它们都有一类“新闻链接”,其中一些链接正在打开google.docs查看器,我需要删除它 以下是我迄今为止的代码: $('a.newsLink').each(function(){ var lnk = $('a.newsLink').attr(); var re = new RegExp("http://docs.google.com/viewer?url=","g"); ln

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

基本上,我有一些URL是动态添加到我的网站。它们都有一类“新闻链接”,其中一些链接正在打开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'>


不管怎么说,到目前为止运气不好……谁能帮我一下吗

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

这就是您的代码应该是什么:

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

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

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

这就是您的代码应该是什么:

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

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

所需的正则表达式是

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];
});

所需的正则表达式是

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];
});

好吧,我完全抛弃了正则表达式,毕竟没必要。酷。现在比我的更好了。兄弟,因为URL总是一个文本字符串(需要替换的部分没有替换或迭代),所以不需要正则表达式+1好吧,我把正则表达式都甩了,毕竟没必要。酷。现在比我的更好了。兄弟,因为URL总是一个文本字符串(需要替换的部分没有替换或迭代),所以不需要正则表达式+1.