-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')

ただし、1 つのリンクを置き換えるだけです。

正規表現を使用すると、各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 に答える