用于网站的URL的正则表达式

时间:2015-05-13 08:29:18

标签: regex sitemap regex-negation regex-greedy regedit

我有两个带有模式的网址:

1。http://localhost:9001/f/

2。http://localhost:9001/flight/

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

HTTP://本地主机[^ /]的 / F [^飞行] / *

HTTP://本地主机[^ /]的 /飞行/ *

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

我已经尝试了http?:// localhost [^ /] / [f] / 。*也用于第一个网址。我无法得到我错过的东西。我觉得这个正则表达式不应该接受除“f”之外的任何东西,但它也允许“飞行”。

请指出我所犯的错误,帮助我。

4 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

保持简单:

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

VS

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

?之前添加$会使可选路径词可选的尾随斜杠。

答案 2 :(得分:0)

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

因此,如果您只想捕获t个网址,那么第一个网站最好use this regex

localhost

this one代表第二个

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

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

答案 3 :(得分:0)

这些应该适合你:

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

您可以看到它有效here