繁体   English   中英

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

[英]Javascript regex to exclude all subdirectories of a given directory in a URL

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

除了some-directory中更深的内容外 ,应该在所有页面上运行代码http://www.somedomainname.com/some-directory/anything : 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控制台告诉我我的正则表达式不好。 我使用*作为通配符进行赌博,但是它没有按我希望的那样工作。

如果某个目录始终是路径名中的第一件事,那么您实际上并不需要通配符,但是您应该处理可能缺少的尾部斜杠(通常使用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[\\/]?/)); 

但是,这两个示例都需要使用斜杠。

这个简单的Debuggex正则表达式呢?

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

正则表达式可视化

Debuggex演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM