我要转换URL的2个部分,首先剥离中间部分,然后将起始部分转换为另一个字符串。
使用Regex可以进行两部分更改吗?
现有
https://mybucketname.s3-eu-west-1.amazonaws.com/myfilename.zip
必填
s3://mybucketname/myfilename.zip
中间的S3网址可以更改,因此可能需要使用通配符(示例网址:s3-eu-west-2.amazonaws.com,s3-us-west-1.amazonaws.com)
答案 0 :(得分:0)
您可以将其解析为URL并提取所需的数据:
const url = new URL('https://mybucketname.s3-eu-west-1.amazonaws.com/myfilename.zip')
const protocol = url.host.split('.')[1].split('-')[0]
const subdomain = url.host.split('.')[0]
const path = url.pathname
const result = protocol + '://' + subdomain + path
console.log(result)
答案 1 :(得分:0)
您可以使用如下所示的正则表达式:
const url = 'https://mybucketname.s3-eu-west-1.amazonaws.com/myfilename.zip'
const match = url.match(/https:\/\/(.+)\.([a-z][0-9]).+\.amazonaws\.com\/(.+)/)
const result = match[2] + '://' + match[1] + '/' + match[3]
console.log(result)
您可能需要根据输入的更改方式对此进行调整。我假设s3
位始终是字母,然后是数字。