URL 到站点的正则表达式

Regex for URL to sites

我有两个具有以下模式的 URL:

1.http://localhost:9001/f/

2.http://localhost:9001/flight/

我有一个网站过滤器,如果正则表达式匹配,它会重定向到相应的网站。我为上面的 2 个 URL 尝试了以下正则表达式模式:

http?://localhost[^/]/f[^flight]/.*

http?://localhost[^/]/flight/.*

两个 URL 都被重定向到第一个站点,因为两个 URL 都与第一个正则表达式匹配。

我试过 http?://localhost[^/]/[f]/.* 也是第一次 url。我无法得到我错过的东西。我觉得这个正则表达式不应该接受 "f" 以外的任何东西,但它也允许 "flight"。

请指出我所犯的错误。

第一个将被以下正则表达式捕获;

/^http:[\/]{2}localhost:9001\/f[^light]$/

另一个将被禁止,可以使用以下正则表达式找到

/^http:[\/]{2}localhost:9001\/flight\/$/

保持简单:

.*/f(/[^/]*)?$

.*/flight(/[^/]*)?$

$ 之前添加 ? 使带有可选路径项的尾部斜杠成为可选。

您的正则表达式有几个问题:1) p? 表示 可选 phtt:// 将匹配),2) [^/] 将仅匹配您网址中的 :,因为它只会捕获 1 个字符(并且您有一个端口号),3) [^light] 是一个否定字符 class,表示 任何不是 light.

的字符

因此,如果您只想捕获 localhost 个网址,您最好 use this regex 第一个站点:

http://localhost[^/]*/f/.*

第二个this one

http://localhost[^/]*/flight/.*

另请注意,根据您使用正则表达式的位置,您的实际输入可能包含也可能不包含协议。

这些应该适合你:

http[s]{0,1}:\/\/localhost:[0-9]{4}\/f\/
http[s]{0,1}:\/\/localhost:[0-9]{4}\/flight\/

您可以看到它正在运行 here