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

获取匹配实例的正则表达式[已关闭]

  •  -1
  • timpone  · 技术社区  · 6 年前

    我有:

    name=joe&company_id=7&name=Barbie
    

    并希望获得(在本例中)name的第二个实例。我该怎么做?我想扩展此功能以获得第I个实例-是否可以通过分组来实现?如果语言很重要,最好使用JavaScript。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Paolo    6 年前

    您可以使用以下模式:

    (?<=name=).*?(?=name=)name=([a-zA-Z]+)
    

    var myString = "name=joe&company_id=7&name=Barbie"
    var myRegexp = /(?<=name=).*?(?=name=)name=([a-zA-Z]+)/g;
    var match = myRegexp.exec(myString);
    console.log(match[1]); 
        2
  •  0
  •   nhahtdh Pankaj Wadhwa    6 年前

    如果您的代码以现代版本的浏览器为目标,则没有理由使用regex。使用 URLSearchParams

    let searchParams = new URLSearchParams("name=joe&company_id=7&name=Barbie");
    var name = searchParams.getAll("name").slice(-1)[0];
    

    获取第n个实例与访问 getAll

    如果在代码的前面有完整的URL:

    let searchParams = new URL(url).searchParams;