正则表达式将URL分为两部分

时间:2019-06-14 14:23:04

标签: javascript regex

我要转换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)

2 个答案:

答案 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位始终是字母,然后是数字。