-2

如果在 href 上找到sites.com ,如何替换所有链接的 URL ?例如:

原始链接--->新链接

从这个href链接

http://one.sites.com/1234/12/page.html
http://two.sites.com/img/dir/index.html
http://any.sites.com/any/any/any.html
http://*.sites.com/*/*/*.*

成为

http://one.sites.com/
http://two.sites.com/
http://any.sites.com/
http://*.sites.com/

我试过使用 jquery:

$("a[href*='http://one.sites.com/']").attr('href','http://one.sites.com')

但它只会替换一个链接。

我认为如果它使用正则表达式,它将自动替换每个href上有sites.com的任何页面上的所有链接

var isUrl=/(\()((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\))|(\[)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\])|(\{)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\})|(<|&(?:lt|#60|#x3c);)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(>|&(?:gt|#62|#x3e);)|((?:^|[^=\s'"\]])\s*['"]?|[^=\s]\s+)(\b(?:ht|f)tps?:\/\/[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]+(?:(?!&(?:gt|#0*62|#x0*3e);|&(?:amp|apos|quot|#0*3[49]|#x0*2[27]);[.!&',:?;]?(?:[^a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]|$))&[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]*)*[a-z0-9\-_~$()*+=\/#[\]@%])/img;

上面的正则表达式代码成功检查了链接的表达式,如:

http://one.sites.com/1/2/page.html

如何使用jquery实现它?请帮忙

4

2 回答 2

1

试试这个代码:

$('a[href*="sites.com"]').each(function(){
   this.href = this.href.replace(/(.*?sites.com\/)/, function(str, p1){
       return p1
   })
})

或者没有正则表达式

$('a[href*="sites.com"]').each(function(){
   var index = this.href.indexOf(".com/");
   this.href = this.href.slice(0, index+5)
})
于 2013-07-24T21:42:50.687 回答
-1

尝试这个:

$('a[href*="sites.com"]').each(
function(){
   // Do a substring here to keep the beginning of the path (domain)
   $(this).attr("href", "http://any.sites.com/");
})
于 2013-07-24T21:14:53.113 回答