将 URL 的单独部分替换为 Javascript

Replacing separate parts of an URL with Javascript

我正在尝试制作一个小书签,它将成为 URL 的一部分并重定向到新的 URL,但我需要更改 URL 的两个部分是分开的。

基数 URL 可以是:

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 想出一些东西,但我是新手,无法弄清楚。

您可以使用 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/dataraw')

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

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

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)