我想设置一个匹配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+是我想要阻止的)
谢谢!
答案 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)