Javascript 正则表达式提取器Jmeter
您好,我正在尝试从下面提到的JSON响应中提取令牌(仅令牌值,不需要前缀或后缀) 使用的常规ex是:Javascript 正则表达式提取器Jmeter,javascript,regex,jmeter,Javascript,Regex,Jmeter,您好,我正在尝试从下面提到的JSON响应中提取令牌(仅令牌值,不需要前缀或后缀) 使用的常规ex是:“令牌”:“(.*?” 但下面是使用reg ex后返回的值 "token":"eyJpZCI6IjgzNjg4IiwiZXhwIjoxNDYzMDQ2NDg3LCJzdWIiOiJhdXRoTmF1dGhvcjJAaGlkZ2xvYmFsLmNvbSIsImV4dGVybmFsaWQiOiJhdXRoTmF1dGhvcjJAaGlkZ2xvYmFsLmNvbSIsInJvbGVzIjpbIkhJR
“令牌”:“(.*?”
但下面是使用reg ex后返回的值
"token":"eyJpZCI6IjgzNjg4IiwiZXhwIjoxNDYzMDQ2NDg3LCJzdWIiOiJhdXRoTmF1dGhvcjJAaGlkZ2xvYmFsLmNvbSIsImV4dGVybmFsaWQiOiJhdXRoTmF1dGhvcjJAaGlkZ2xvYmFsLmNvbSIsInJvbGVzIjpbIkhJRFN5c0FkbWluIl0sImF1ZCI6InN5c1JNMyIsImlzcyI6Imh0dHBzOlwvXC91c2Jvc3MtdHN0NHRyZXNzOjQ0M1wvYWMuNHRyZXNzLnNhbWxpZHBcL1NJU0RPTUFJTlwvYXV0aG4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhdXRoTmF1dGhvcjJAaGlkZ2xvYmFsLmNvbSIsImlhdCI6MTQ2Mjk2MDA4NywiZ3JvdXBpZHMiOlsiMTAwMCJdfQasddds12"
但我不希望标记“
和最后一个”
被返回。
请帮助我编写符合我标准的正则表达式
实际JSON响应
{
"statusCode":200,
"result":{
"list":[
{
"provider":"openID",
"token":"eyJpZCI6IjgzNjg4IiwiZXhwIjoxNDYzMDQ2NDg3LCJzdWIiOiJhdXRoTmF1dGhvcjJAaGlkZ2xvYmFsLmNvbSIsImV4dGVybmFsaWQiOiJhdXRoTmF1dGhvcjJAaGlkZ2xvYmFsLmNvbSIsInJvbGVzIjpbIkhJRFN5c0FkbWluIl0sImF1ZCI6InN5c1JNMyIsImlzcyI6Imh0dHBzOlwvXC91c2Jvc3MtdHN0NHRyZXNzOjQ0M1wvYWMuNHRyZXNzLnNhbWxpZHBcL1NJU0RPTUFJTlwvYXV0aG4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhdXRoTmF1dGhvcjJAaGlkZ2xvYmFsLmNvbSIsImlhdCI6MTQ2Mjk2MDA4NywiZ3JvdXBpZHMiOlsiMTAwMCJdfQasddds12",
"username":"authNauthor2@adasd.com",
"audience":"sysRM3",
"expires":1463046487,
"roles":[
"asdasd"
],
"groups":[
"1000"
]
},
{
"EMAIL":"authNauthor2@asdasd.com",
"ENDPOINT_ID":null,
"KEY_AUTHORIZATIONS":"IqweQWQCE-001, asdasd-002",
"EU_COMPANY_NAME":"asdasdasd"
}
]
}
}
我想你误解了
匹配
和捕获组
之间的区别。让我们稍微简化一下您的数据,只需考虑:
"token":"eyJpZCI6IjgzN"
您的模式:“token”:“(.*”
将匹配整行,而捕获组将捕获括号内的内容(这里,token值:eyJpZCI6IjgzN
)
您需要获得捕获组的价值:
var re=/“令牌”:“(.*”/;
var str='{\n“statusCode”:200,\n“result”:{\n“list”:[\n{\n“provider”:“openID”,\n“token”:"2、2、2、YMMF2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、2、KZ2XVYMFSLMNVBISIMLHDCI6MTQ2MJK2MDA4 NYWIZ3JVDxBPZHMIOLSIMTAWMCJDFQASDDS12“,\n“用户名”:”authNauthor2@adasd.com“,\n”受众“:“sysRM3”,\n”过期“:1463046487,\n”角色“:[\n”asdasd“\n],\n”组“:[\n”1000”\n]\n},\n{\n“电子邮件”:authNauthor2@asdasd.com“,\n“端点ID”:null、\n“密钥授权”:“IqweQWQCE-001,asdasd-002”、\n“欧盟公司名称”:“asdasdasd”\n}\n]\n}\n}”;
var-m;
如果((m=re.exec(str))!==null){
如果(m.index==re.lastIndex){
re.lastIndex++;
}
document.body.innerHTML+=m[1];
}
查看监听器的RegExp Tester模式:
您的正则表达式有效,因此只需在正则表达式提取器中使用$1$
作为模板。完整配置:
- 参考名称:任何有意义的内容,即
标记
- 正则表达式:
“令牌”:“(.*?”
- 模板:
$1$
${token}
您可以使用以下方法检查提取的变量值:
为了处理JSON数据,可以更容易地使用available via,当涉及到条件选择(如“提取电子邮件所在的令牌”)时,它非常方便authNauthor2@asdasd.com" 相关的JSON路径表达式将像
$…令牌[0]
一样简单
见:
- 有关概述和语法参考
- 对于所涵盖的某些场景