【问题标题】:Regular expression for getting pathname of a url获取url路径名的正则表达式
【发布时间】:2012-03-13 08:56:52
【问题描述】:

我想提取完整的路径,即 javascript 中 URL 的主机名后跟的路径。

var url = 'https://domain.us/file.php/fghfgh?id=1'

这里我要提取/file.php/fghfgh?id=1

如何仅使用正则表达式而不是“document.createElement('a')”方法来实现?

我需要正则表达式的答案,

【问题讨论】:

  • 网址是否总是以 .us 结尾?也许你可以简单地使用 string.split(".us") --- 这将返回一个数组,其中 array[1] 包含你想要的 url 部分。
  • 什么是“document.createElement('a')”方法?,我之前没听说过。
  • 以上只是一个例子。我想在任何url的主机名之后提取字符串(包括路径名+搜索名)。需要正则表达式中的答案

标签: javascript regex


【解决方案1】:

如果您正在访问location object,您可以这样做

var path = location.href.replace(location.protocol+"//"+location.hostname,"")

var path = location.pathname+location.search

如果你有 # 你可能还需要添加它,正如 just_mad 指出的那样:

var path = location.pathname+location.search+location.hash

【讨论】:

    【解决方案2】:
    ^[^#]*?://.*?(/.*)$
    

    归功于strager:

    Regular expression to remove hostname and port from URL?

    【讨论】:

      【解决方案3】:

      使用一些经过验证的东西怎么样:http://blog.stevenlevithan.com/archives/parseuri

      甚至还有一个演示:http://stevenlevithan.com/demo/parseuri/js/

      【讨论】:

        【解决方案4】:

        对于您的问题,这里有一个更具体的正则表达式;

        https?://[-A-Z0-9.]+(/[-A-Z0-9+&@#/%=~_|!:,.;?]*)?
        

        【讨论】:

        • 我已经用正则表达式测试器进行了检查,它工作正常。你能更具体地说明这个问题吗?
        • 我不太懂正则表达式。我这样测试 var url = 'suntimes.com/csp/cms/sites/STM/assets/js/jquery-latest.js' var path = url.match(/https?://[-A-Z0-9.]+(/[-A-Z0-9+&@#/ %=~_|!:,.;?]*)?/);警报(路径)
        • 但我无法获取路径为 /csp/cms/sites/STM/assets/js/jquery-latest.js
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-18
        • 1970-01-01
        相关资源
        最近更新 更多