代码之家  ›  专栏  ›  技术社区  ›  sigur7

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

  •  -2
  • sigur7  · 技术社区  · 7 年前

    我希望转换URL的两部分,首先去掉中间部分,然后将开始部分转换为另一个字符串。

    正则表达式是否可以进行两部分更改?

    https://mybucketname.s3-eu-west-1.amazonaws.com/myfilename.zip

    s3://mybucketname/myfilename。拉链

    不过,中间的S3 url可以更改,因此可能需要通配符(示例url:S3-eu-west-2.amazonaws.com、S3-us-west-1.amazonaws.com)

    2 回复  |  直到 7 年前
        1
  •  0
  •   James Coyle    7 年前

    您可以将其解析为 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)
        2
  •  0
  •   James Coyle    7 年前

    您可以使用如下正则表达式:

    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