如果字符串包含除特定模式后允许的字符以外的字符,则不匹配

时间:2018-05-08 16:36:05

标签: javascript regex

我正在尝试匹配简单(虚假)HTTP请求:

GET /path/to/file HTTP
GET /path/to/file HTTP/11
GET /path/to/file HTTP/1.1

我目前正在使用:
^GET.+?(?:HTTP)\/?[\d]*\.?[\d]*

但是,这也匹配GET /path/to/file HTTPfoobar,我不想要。我如何制作这个布尔值?即匹配3个第一个模式中的任何一个,但没有其他任何东西。

1 个答案:

答案 0 :(得分:0)

我将锚添加到最后,它按预期工作。通过将正向前瞻更改为非捕获组也可以简化。

还有人指出,该模式与GET /path/to/file HTTP123类似,所以我添加了(?!\d)

我使用的最终expr是:^GET.+?(?:HTTP)(?!\d)\/?[\d]*\.?[\d]*$

严格匹配[...] HTTP / num.num的是^GET.+?(?:HTTP)(?:\/\d+(?:\.\d+))?$,感谢Matt!