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

如何获取URL字符串的特定部分?

  •  1
  • Sireini  · 技术社区  · 6 年前

    这是 console.log 以下:

    console.log('subscribe:', event.url);
    "https://hooks.stripe.com/adapter/ideal/redirect/complete/src_1E2lmZHazFCzVZTmhYOsoZbg/src_client_secret_EVnN8bitF0wDIe6XGcZTThYZ?success=true"
    

    我想去哪里脱衣 src_1E2lmZHazFCzVZTmhYOsoZbg src_client_secret_EVnN8bitF0wDIe6XGcZTThYZ

    如何做到这一点?

    4 回复  |  直到 6 年前
        1
  •  2
  •   epascarello    6 年前

    将字符串转换为URL,读取路径名,然后拆分 / 最后两部分。

    var str = "https://hooks.stripe.com/adapter/ideal/redirect/complete/src_1E2lmZHazFCzVZTmhYOsoZbg/src_client_secret_EVnN8bitF0wDIe6XGcZTThYZ?success=true"
    
    const parts = new URL(str).pathname.split('/').slice(-2)
    console.log(parts)
        2
  •  1
  •   Roko C. Buljan    6 年前

    如果查询参数 ?success=true 是可选的(大多数情况下 你可以

    function getSrcAndSecret (url) {
      const pts = /\/(src_[^/?]+)\/(src_client_secret_[^/?]+)/.exec(url);
      return {
        src: pts && pts[1] || "",
        secret: pts && pts[2] || ""
      } 
    }
    
    // Demo:
    const test1 = getSrcAndSecret("https://hooks.stripe.com/adapter/ideal/redirect/complete/src_1E2lmZHazFCzVZTmhYOsoZbg/src_client_secret_EVnN8bitF0wDIe6XGcZTThYZ?success=true");
    const test2 = getSrcAndSecret("https://hooks.stripe.com/adapter/ideal/redirect/complete/src_1E2lmZHazFCzVZTmhYOsoZbg/src_client_secret_EVnN8bitF0wDIe6XGcZTThYZ");
    const test3 = getSrcAndSecret("https://hooks.stripe.com/adapter/ideal/redirect/complete");
    
    console.log(test1, test2, test3)
        3
  •  0
  •   Aziz.G    6 年前

    const url = "https://hooks.stripe.com/adapter/ideal/redirect/complete/src_1E2lmZHazFCzVZTmhYOsoZbg/src_client_secret_EVnN8bitF0wDIe6XGcZTThYZ?success=true";
    
    
    const res = url.split(/\?|\//g).filter(el => el.startsWith("src"));
    
    console.log(res)
        4
  •  -1
  •   Jonas Wilms    6 年前
      const [a, b] = event.url.split("?")[0].split("/").slice(-2);