我想在JMeter的正则表达式提取器中通过正则表达式从响应主体中提取字符串

时间:2018-11-26 19:17:46

标签: regex jmeter expression extractor

我的回复正文中有nonce=nmjs7avwT1&

我只需要上面的nmjs7avwT1部分用于下一个请求。

如何为此编写正则表达式?

2 个答案:

答案 0 :(得分:1)

  1. Regular Expression Extractor添加为返回此随机数的请求的子项
  2. 配置如下:

    • 已创建变量的名称:任何有意义的变量,例如nonce
    • 正则表达式:nonce=(\w+)&
    • 模板:$1$
  3. 就是这样,您应该可以在需要的地方将提取的值引用为${nonce}

演示(假设RegExp Tester mode of the View Results Tree listener

enter image description here

更多信息:

答案 1 :(得分:0)

您可以使用以下正则表达式。

(?<=nonce\=)\w*(?=\&)

说明:

  
      
  • 正向(?<=nonce\=) 后:断言以下正则表达式匹配。 nonce从字面上匹配字符随机数(大小写)   敏感)\=与字符=完全匹配(区分大小写)
  •   
  • \w*匹配任何单词字符(等于[a-zA-Z0-9 _])*量词-零次至无限次匹配,多次   尽可能地回馈(贪婪)
  •   
  • 正向超前(?=\&) :断言下面的正则表达式与\&匹配,并且字符与字面值匹配(区分大小写)
  •   

示例代码:

const regex = /(?<=nonce\=)\w*(?=\&)/gm;
const str = `nonce=nmjs7avwT1&`;
let m;

while ((m = regex.exec(str)) !== null) {
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }

    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

输出:

Found match, group 0: nmjs7avwT1