正则表达式在特定术语后找到值

时间:2017-08-06 00:20:42

标签: javascript regex 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"};

在上面的文字中,字段的值将针对不同的用户进行更改。标签名称保持不变。我想获取 geoData 的值。那么, geoData = 之后的所有内容。 在上面的数据中,我想回来:

new york|NY|11432|US|NA

我想出了/geoData=[^;]*/,然而,这给了我geoData=new york|NY|11432|US|NA

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

2 个答案:

答案 0 :(得分:2)

您应该使用捕获组(将要保留在括号中的部分包裹起来):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]);




答案 1 :(得分:1)

或使用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")
)