2013-07-24 2 views
-2

Как заменить URL всех ссылок, если найдено sites.com на href ?? Например:Заменить все ссылки (href) на веб-странице с помощью jquery

Original Link --->New Link

от этой ссылке 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') 

, но это будет только заменить одну ссылку.

я думаю, что если он с регулярным выражением, то он будет автоматически заменить все ссылки на любой странице, которые имеют sites.com на каждом HREF

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? пожалуйста, помогите

+1

Пытались ли вы что-нибудь себя? – putvande

+0

Вы хотите сделать это на ходу? Или вы разбираете статический файл? – amaurs

+0

@putvande Я пробовал использовать jquery. Я не знаю, как использовать regex на jquery – Vimux

ответ

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) 
}) 
+0

спасибо, он работает без regExp .. извините, если я не могу дать +1 .. – Vimux

-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/"); 
}) 
+0

-1 для помощи ... могу я знать причину? – glautrou

+0

regex трудно писать/поддерживать, в вашем случае я думаю, вам следует избегать этого, используйте substr() и indexOf() вместо этого – glautrou