用Javascript替换URL的单独部分

时间:2018-02-01 04:03:28

标签: javascript bookmarklet

我试图制作一个可以参与网址并重定向到新网址的书签,但我需要更改两个独立的网址。

基本网址可以是:

  

78.media.tumblr.com / fc87fac5ea0d88e1e22a214d25a169ee / tumblr_p3fjmdiF7f1r9qk1io1的 _1280 .PNG

我需要它像这样结束:

  

s3.amazonaws.com/data.tumblr.com / fc87fac5ea0d88e1e22a214d25a169ee / tumblr_p3fjmdiF7f1r9qk1io1的 _raw .PNG

所以我需要更换" 78.media.tumblr.com" " 1280"

我尝试使用window.location.assignlocation.href.replace来提出一些问题,但我很新,无法弄清楚。

2 个答案:

答案 0 :(得分:1)

您可以使用regexwindow.location.href执行此操作。这是假设你只是看着不倒翁。如果你不这样做,那么正则表达式中会有另一个步骤。

// first get the url
var url = window.location.href;

// Use regex to keep only the parts we want and replace the others
var newUrl = url.replace(/.*(\.tumblr.*\_).*(\..*)/, 'http://s3.amazonaws.com/data$1raw$2')

// go to the new page
window.location.href = newUrl;

答案 1 :(得分:0)

通常,您可以使用String.prototype.replace替换字符串的各个部分。根据您需要匹配的灵活性,您可以将正则表达式调整为或多或少匹配'。



const startUrl = '78.media.tumblr.com/fc87fac5ea0d88e1e22a214d25a169ee/tumblr_p3fjmdiF7f1r9qk1io1_1280.png'

const endUrl = 's3.amazonaws.com/data.tumblr.com/fc87fac5ea0d88e1e22a214d25a169ee/tumblr_p3fjmdiF7f1r9qk1io1_raw.png'

const tumblerRegex = /.*\.tumblr\.com/
const numberRegex = /_\d{4}/

function transform (start) {
  return start.replace(tumblerRegex, 's3.amazonaws.com/data.tumblr.com').replace(numberRegex, '_raw')
  }
  
  console.log(transform(startUrl) == endUrl)