正则表达式 HTTP 响应正文消息

Regex HTTP Response Body Message

我使用 jmeter 进行 REST 测试。 我发出了一个 HTTP 请求,这是响应数据:

{"id":11,"name":"value","password":null,"status":"ACTIVE","lastIp":"0.0.0.0","lastLogin":null,"addedDate":1429090984000}

我只需要

中的 ID(即 11)
{"id":11,....

我使用下面的正则表达式:

([0-9].+?)

它工作得很好,但如果我的 ID 超过 2 位数字,就会有问题。我需要将正则表达式更改为:

([0-9][0-9].+?)

是否有针对我的问题的动态正则表达式。感谢您的关注。

此致, 斯特菲奥

您可以像这样使用量词:

([0-9]{2,}.+?)

它将捕获 2 个或更多数字,然后是任何符号,1 次或更多次。如果您不想在数字后允许其他字符,请使用 * 而不是 +:

([0-9]{2,}.*?)

Regex demo

如果您想要 {"id":, 之间的任何整数,请使用以下正则表达式:

{"id":(\d+),

然而,处理 JSON 数据的更聪明的方法可能是 JSON Path Extractor (available via JMeter Plugins),今后这个选项可以更容易地用于处理复杂的 JSON。

请参阅 Using the XPath Extractor in JMeter 指南(向下滚动到 "Parsing JSON")以了解有关语法和用例的更多信息。

我建议使用以下正则表达式:

"id":([^,]*),

这将首先找到 "id": 然后寻找任何不是逗号的东西,直到找到逗号。请注意,字符分组仅围绕 ID 的值进行。

这适用于任何长度的 ID。

编辑: 相同的概念几乎适用于任何 JSON 数据,例如引用值的地方:

"key":"([^"]*)"

只要值被引用且不包含引号,该正则表达式将从给定键中提取值。它首先找到 "key": 然后匹配任何不是引号的内容直到下一个引号。