1

我需要为不同的 url 发送不同的响应。但是我使用的正则表达式不起作用。

有问题的两个正则表达式是

"/v1/users/[^/]+/permissions/domain/HTTP/"    

(例如:http://localhost:4544/v1/users/10feec20-afd9-46a0-a3fc-9b2f18c1d363/permissions/domain/HTTP

"/v1/users/[^/]+/"    

(例如:http://localhost:4544/v1/users/10feec20-afd9-46a0-a3fc-9b2f18c1d363

我无法弄清楚如何在“[^/]+/”之后停止正则表达式匹配。两种模式都返回相同的结果。就好像由于正则表达式,它们都是相同的 URL。模式匹配发生在 mountebank 模拟服务器中,使用匹配谓词。任何帮助,将不胜感激。谢谢。

4

1 回答 1

3

正则表达式"/v1/users/[^/]+/"匹配两个 url。您要求它匹配 '/v1/users/` 以及除 '/' 后跟斜杠之外的任何内容。这发生在较长的 URL 和较短的 URL 中,这就是它匹配的原因。

几个选项:

您可以将较长的网址而不是较短的网址匹配:

"/v1/users/[^/]+/.+"

这匹配http://localhost:4544/v1/users/10feec20-afd9-46a0-a3fc-9b2f18c1d363/permissions/domain/HTTP,但不匹配 http://localhost :4544/v1/users/10feec20-afd9-46a0- a3fc-9b2f18c1d363/

您也可以通过锚定末端来匹配短的:

"/v1/users/[^/]+/$"

这与短 URL 匹配,但与长 URL 不匹配。

于 2017-07-04T00:02:08.963 回答