正则表达式限制通配符的url文件夹

时间:2013-05-23 13:35:01

标签: regex

我想设置一个匹配URL的某些模式的正则表达式:

http://www.domain.com/folder1/folder2/anything/anything/index.html

匹配并完成工作:

/^http:\/\/www\.domain\.com\/folder1\/folder2\/.*\/.*\/index\.html([\?#].*)?$/.test(location.href)

我不确定如何将通配符限制为每个文件夹。那么如何防止以下匹配:

http://www.domain.com/folder1/folder2/folder3/folder4/folder5/index.html

(注意:文件夹5+是我想要阻止的)

谢谢!

5 个答案:

答案 0 :(得分:1)

/^http:\/\/www\.domain\.com\/folder1\/folder2\/[^/]*\/[^/]*\/index\.html([\?#].*)?$/

我不记得我们是否应该逃避[]内的斜杠。我不这么认为。

编辑:使用+代替*来修改汤姆的评论: /^http:\/\/www\.domain\.com\/folder1\/folder2\/[^/]+\/[^/]+\/index\.html([\?#].*)?$/

答案 1 :(得分:1)

.匹配任何字符。

[^/]匹配除/以外的任何字符。

由于/字符标记了正则表达式文字的开头和结尾,因此您可能必须像这样对它们进行转义:[^\/]

因此,将.*替换为[^\/]*可以达到您想要的效果:

/^http:\/\/www\.domain\.com\/folder1\/folder2\/[^\/]*\/[^\/]*\/index\.html([\?#].*)?$/.test(location.href)

答案 2 :(得分:1)

/^http:\/\/www\.domain\.com\/\([^/]*\/\)\{2\}/

您可以将2更改为您想要匹配的任意数量的目录。

答案 3 :(得分:1)

试试这个正则表达式:

/^http:\/\/www\.domain\.com\/(?:\w+\/){1,3}index\.html([\?#].*)?$/

将数字 3 更改为可能的最大文件夹深度。

答案 4 :(得分:0)

您可以使用:

^http:\/\/www\.domain\.com\/folder1\/folder2\/(\w*\/){2}index\.html([\?#].*)?$/.test(location.href)