javascript - 相似 URL 的正则表达式模式匹配

标签 javascript regex mountebank

我需要为不同的 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 模拟服务器中。任何帮助,将不胜感激。谢谢。

最佳答案

正则表达式 "/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。

关于javascript - 相似 URL 的正则表达式模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44895046/

相关文章:

javascript - 为什么 'await' 在 '.then()' 函数返回的代理上触发 'async'?

javascript - 在 vuejs 中,输入事件触发在列表中不起作用

php - 如果我使用以下内容,正则表达式是否用于表单验证?

python - 如何使用正则表达式转换 Pandas 中的转换列

docker - 如何在Docker中启动Mountebank?

javascript - 在带有参数的某些php脚本之后调用jquery函数

javascript - Django:检索 Ajax 调用中所选下拉选项的私钥

python - Django 的 `url` 模板标签如何反转正则表达式?

mysql - node.js mysql 结果变成一个变量