【问题标题】:How to extract part of location.href in JavaScript?如何在 JavaScript 中提取 location.href 的一部分?
【发布时间】:2009-03-09 16:29:36
【问题描述】:

在这个例子中,从 location.href 中提取 'first' 的正则表达式是什么,例如:

http://www.mydomain.com/first/

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    也许不是您问题的答案,但如果您使用 Javascript 编写,您可能希望使用 location.pathname 而不是自己从整个 href 中提取它。

    【讨论】:

    • +1。正则表达式不应该是一个人的首选答案! location.pathname.split('/')[1] 比类似的正则表达式更容易理解。
    • 感谢您提醒我拆分 - 当我拥有 /first/ 和 /first/second/ 时效果很好
    【解决方案2】:

    【讨论】:

    • @CMS:因为赤裸裸的 location.pathname 无法回答问题。
    【解决方案3】:

    既然你要求一个正则表达式解决方案,那就是它:

    ^(?:[^:]+://)?[^/]+/([^/]+)

    这匹配所有这些变体(匹配组 1 在任何情况下都将包含 "first"):

    • http://www.mydomain.com/first/
    • http://www.mydomain.com/first
    • https://www.mydomain.com/first/
    • https://www.mydomain.com/first
    • www.mydomain.com/first/(这个和下一个是为了方便)
    • www.mydomain.com/first

    为了使它成为“http://”-only,它变得更简单了:

    ^http://[^/]+/([^/]+)

    【讨论】:

    • 真的吗?一个正则表达式,当它作为一个属性可用时?
    • @annakata:嗯,这就是 cdillon 所要求的。但是,是的,有点倒退。
    • @annakata: location.pathname 也需要一些后处理,因为 OP 似乎只要求“第一”部分。诚然,这可以通过 split("/")[0] 来完成,但是 a) 我在这里看不到正则表达式的真正缺点,并且 b) 他可能出于某种原因还想匹配 URL 的其余部分。
    • 是的,你是对的。我稍微改变了正则表达式(使第一组成为非捕获组),所以现在它应该给你这个:[“mydomain.com/first”,“first”]。数组位置 0 始终是整个匹配,数组位置 1 是匹配组 1。
    • 我选择了 location.pathname,但感谢正则表达式的回答,我会研究它。
    【解决方案4】:

    您可以使用 window.location.host 和 window.location.search 详情请查看this page

    【讨论】:

      【解决方案5】:
      var re = /^http:\/\/(www.)?mydomain\.com\/([^\/]*)\//;
      var url = "http://mydomain.com/first/";
      
      if(re.test(url)) {
        var matches = url.match(re);
        return matches[2]; // 0 contains whole URL, 1 contains optional "www", 2 contains last group
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 2010-11-24
        • 1970-01-01
        • 2013-04-04
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        相关资源
        最近更新 更多