JMeter学习----正则表达式提取器

正则表达式提取器
在测试过程中,有些数据经常发生变化,要获取并使用这些数据,就要使用关联。比如经常遇到的场景就是,第二个请求提交的参数要从第一个请求的返回数据中获取。
正则表达式提取器
在取样器右键添加后置处理器----正则表达式提取器
JMeter学习----正则表达式提取器

后置处理器:在请求结束或者返回响应结果时发挥作用
正则表达式提取器:允许用户从服务器的响应中通过使用perl的正则表达式提取值。该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符串,并将结果存储到给定的变量名中。
1.APPly to:作用范围(返回内容的断言范围)
Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
Main sample only:仅作用于父节点的取样器
Sub-samples only:仅作用于子节点的取样器
JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
2.要检查的响应字段:需要检查的响应报文的范围
主体:响应报文的主体
Body(unescaped):主体,响应的主体内容且替换了所有的html转义符,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用
Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能
Response Headers:响应信息头
Request Headers:请求信息头
URL:统一资源定位符
响应代码:响应状态码,比如200、404等
响应信息:响应信息
3.引用名称(Reference Name):Jmeter变量的名称,存储提取的结果;即下个请求需要引用的值、字段、变量名。
4.正则表达式(Regular Expression):使用正则表达式解析响应结果
5.模板:代表从正则表达式结果引用的,表示解析到正则表达式的第几个值给token,其实结果是一组,而不是一个。00代表这一组结果的全部,11代表这一组结果的第1个,以此类推;1122代表该正则表达式一组结果中的第1个和第2个,俩结果挨在一起中间没有间隔;33,44代表该正则表达式一组结果中的第3个和第4个,俩结果间有一个逗号相连。
6.匹配数字:0代表正则表达式结果组中随机值,1代表全部取值。
7.缺省值:如果正则表达式没有搜找到值,则使用此缺省值,通畅写一个ERROR。

常用的正则表达式操作符:
基本操作符
JMeter学习----正则表达式提取器

?在找到第一个匹配项后就停止
常用表达式
常用的正则表达式(转)
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]\r
匹配HTML标记的正则表达式:/<(.
)>.</\1>|<(.) />/
匹配首尾空格的正则表达式:(^\s*)|(\s*KaTeX parse error: Undefined control sequence: \d at position 18: …匹配IP地址的正则表达式:/(\̲d̲+)\.(\d+)\.(\d+…
1、非负整数:^\d+$
2、正整数:1[1-9][0-9]$
3、非正整数:^((-\d+)|(0+))$
4、负整数:^-[0-9][1-9][0-9]$
5、整数:^-?\d+$
6、非负浮点数:^\d+(.\d+)?$
7、正浮点数:^((0-9)+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
8、非正浮点数:^((-\d+.\d+)?)|(0+(.0+)?))$
9、负浮点数:^(-((正浮点数正则式)))$
10、英文字符串:2+$
11、英文大写串:3+$
12、英文小写串:4+$
13、英文字符数字串:5+$
14、英数字加下划线串:^\w+$
15、E-mail地址:6+(.[\w-]+)@[\w-]+(.[\w-]+)+$
16、URL:7+://(\w+(-\w+)
)(.(\w+(-\w+)))(?\s*)?$ 或:http://[A-Za-z0-9]+.[A-Za-z0-9]+[/=?%-&_~`@[]’:+!]*([<>""])$
17、邮政编码:8\d{5}$
18、中文:9+$
19、电话号码:^((\d2,3)|(\d{3}-))?(0\d2,3|0\d{2,3}-)?[1-9]\d{6,7}(-\d{1,4})?$
20、手机号码:^((\d2,3)|(\d{3}-))?13\d{9}$
21、双字节字符(包括汉字在内):^\x00-\xff
22、匹配首尾空格:(^\s
)|(\s*KaTeX parse error: Undefined control sequence: \/ at position 44: …TML标记:<(.*)>.*<\̲/̲\1>|<(.*) \/> …/
37、腾讯QQ号:10[1-9][0-9]$
38、帐号(字母开头,允许5-16字节,允许字母数字下划线):11[a-zA-Z0-9_]{4,15}$
39、中文、英文、数字及下划线:12+$
举个栗子:
JMeter学习----正则表达式提取器
JMeter学习----正则表达式提取器
JMeter学习----正则表达式提取器

JMeter学习----正则表达式提取器
JMeter学习----正则表达式提取器

1.提取(单个值)登录后获取的token,作为请求头参数,用于其它接口请求使用
2.正则提取(同字段,多个值)案例
提取列表接口所有id集合,使用第几个id,id_n就可以,如果想迭代所有id,再搭配foreach迭代控制器,迭代每个id
3.正则提取(不同字段,多个值)案例


  1. 0-9 ↩︎

  2. A-Za-z ↩︎

  3. A-Z ↩︎

  4. a-z ↩︎

  5. A-Za-z0-9 ↩︎

  6. \w- ↩︎

  7. a-zA-Z ↩︎

  8. 1-9 ↩︎

  9. \u0391-\uFFE5 ↩︎

  10. 1-9 ↩︎

  11. a-zA-Z ↩︎

  12. \u4e00-\u9fa5_a-zA-Z0-9 ↩︎