代码之家  ›  专栏  ›  技术社区  ›  David Hellsing

快速regexp获取路径

  •  3
  • David Hellsing  · 技术社区  · 16 年前

    我需要使用regexp提取文件的完整路径

    mydomain.com/path/to/file/myfile.html -> mydomain.com/path/to/file/

    /mypath/file.txt -gt; /mypath/

    有人吗?

    4 回复  |  直到 16 年前
        1
  •  3
  •   Gumbo    16 年前

    试试这个:

    "mydomain.com/path/to/file/myfile.html".replace(/[^\/]*$/, "")
    "/path/file.txt".replace(/[^\/]*$/, "")
    

    但是,您也可以在不使用正则表达式的情况下通过拆分:

    "mydomain.com/path/to/file/myfile.html".split("/").slice(0, -1).join("/")+"/"
    "/path/file.txt".split("/").slice(0, -1).join("/")+"/"
    
        2
  •  4
  •   Vjeux    16 年前

    在没有regexp的情况下应该更快:

    path.substr(0, path.lastIndexOf('/') + 1);
    

    实例:

    var path = "mydomain.com/path/to/file/myfile.html";
    path.substr(0, path.lastIndexOf('/') + 1);
    "mydomain.com/path/to/file/"
    
    var path = "/mypath/file.txt";
    path.substr(0, path.lastIndexOf('/') + 1);
    "/mypath/"
    
    var path = "file.txt";
    path.substr(0, path.lastIndexOf('/') + 1);
    ""
    
        3
  •  1
  •   Lucero    16 年前

    此regex应执行以下操作:

    ^(?:[^\/]*\/)*
    
        4
  •  0
  •   mck89    16 年前

    这工作:

    var file="mydomain.com/path/to/file/myfile.html";    
    var match=/^(.*?)[\w\d\.]+$/g.exec(file);
    var path=match[1];