【问题标题】:Regex to find value after a specific term正则表达式在特定术语后查找值
【发布时间】:2017-08-06 00:20:42
【问题描述】:

我想保存出现在特定字符串之后的任何值。

正文如下:

ug=595ad8543534510555d9; ugs=1; s_ppv=54353; optimizelyEndUserId=orwe535908r0.58354354373; countryCode=US; geoData=new york|NY|11432|US|NA; _uetsid=_u5435fgdac3e; _t_tests={"[dasds59ec]":"B","[2fdfsde8cd]":"A","lift_exp":"m"};

在上面的文本中,字段的值会因不同的用户而变化。标签名称保持不变。我想获取 geoData 的值。因此,geoData= 之后的所有内容。 在上面的数据中,我想找回来:

new york|NY|11432|US|NA

我想出了/geoData=[^;]*/,但是,它给了我geoData=new york|NY|11432|US|NA

如何从我的正则表达式中排除 geoData= 部分,以便在 = 符号之后给我值?

【问题讨论】:

    标签: javascript regex match


    【解决方案1】:

    您应该使用捕获组(将要保留的部分放在括号中):geoData=([^;]*)/

    const match = 'ug=595ad8543534510555d9; ugs=1; s_ppv=54353; optimizelyEndUserId=orwe535908r0.58354354373; countryCode=US; geoData=new york|NY|11432|US|NA; _uetsid=_u5435fgdac3e; _t_tests={"[dasds59ec]":"B","[2fdfsde8cd]":"A","lift_exp":"m"};'.match(/geoData=([^;]*)/);
    console.log(match[1]);

    【讨论】:

    • 谢谢,这正是我想要的!
    【解决方案2】:

    或者使用replace方法:

    var text = 'ug=595ad8543534510555d9; ugs=1; s_ppv=54353; optimizelyEndUserId=orwe535908r0.58354354373; countryCode=US; geoData=new york|NY|11432|US|NA; _uetsid=_u5435fgdac3e; _t_tests={"[dasds59ec]":"B","[2fdfsde8cd]":"A","lift_exp":"m"};'
    
    console.log(
      text.replace(/.*geoData=([^;]+).*/, "$1")
    )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2022-08-18
      • 1970-01-01
      相关资源
      最近更新 更多