Javascript正则表达式排除URL中给定目录的所有子目录

时间:2015-02-27 21:44:06

标签: javascript regex url

假设您有一个域http://www.somedomainname.com

有些代码应该在所有页面上运行,除了some-directory中更深层次的内容:http://www.somedomainname.com/some-directory/anything

我试过了:

(function($) {

    $(document).ready(function() {

        var isBad = !!window.location.pathname.match(/^\/some-directory/*);
        if ( !isBad ) {

            // RUN CODE
        }

    });

}(jQuery));

Chrome控制台告诉我,我的正则表达式很糟糕。我使用*作为通配符进行了赌博,但它并没有像我希望的那样正常工作。

2 个答案:

答案 0 :(得分:1)

如果some-directory始终是路径名中的第一个东西,那么你真的不需要使用通配符,但是你应该处理可能缺少的尾随斜杠(通常会提供像index.html这样的文件):



var testing = "";
console.log(testing = "/some-directory", testing.match(/^\/some-directory[\/]?/));
console.log(testing = "/some-directory/", testing.match(/^\/some-directory[\/]?/));
console.log(testing = "/some-directory/something", testing.match(/^\/some-directory[\/]?/));
console.log(testing = "/wont-find/some-directory", testing.match(/^\/some-directory[\/]?/));




如果您需要在路径中的任何位置找到该目录名称,可以在开头添加通配符:



var testing = "";
console.log(testing = "/some-other-dir/some-directory", testing.match(/^.*\/some-directory[\/]?/));
console.log(testing = "/some-other-dir/some-directory/", testing.match(/^.*\/some-directory[\/]?/));
console.log(testing = "/some-other-dir/some-directory/something", testing.match(/^.*\/some-directory[\/]?/));




但是这两个例子都需要前导斜杠。

答案 1 :(得分:0)

这个简单的Debuggex正则表达式怎么样?

^\/some-directory\/[\s\S]

Regular expression visualization

Debuggex Demo