【问题标题】:Regex to get first word after slash in URL正则表达式在 URL 中的斜杠后获取第一个单词
【发布时间】:2011-08-09 18:42:51
【问题描述】:

我需要在 javascript 的 url 中获取斜杠后的第一个单词,我认为使用正则表达式是理想的。

以下是 URL 可能的样子:

粗体是我需要正则表达式来匹配每个场景的内容,所以基本上只有斜杠之后的第一部分,不管有多少进一步的斜杠。

我完全不知所措,感谢您的帮助。

【问题讨论】:

  • 从技术上讲,您的示例中斜线后的第一个单词是“mysite”...您想要的是 url 路径组件的第一部分。

标签: javascript regex


【解决方案1】:

带有正则表达式的 JavaScript。这将匹配第一个 / 之后的任何内容,直到我们遇到另一个 /。

window.location.pathname.replace(/^\/([^\/]*).*$/, '$1');

【讨论】:

  • 我的朋友回答得很好
  • 当 url 是 www.a.com/1/2 时,我想要 /1/ 返回。当网址是 www.a.com 时,我想要/返回,这可以在一个正则表达式中完成吗?
【解决方案2】:

非正则表达式。

var link = document.location.href.split('/');
alert(link[3]);

【讨论】:

    【解决方案3】:

    可以使用官方rfc2396 regex

    var url = "http://www.example.com/path/to/something?query#fragment";
    var exp = url.split(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/);
    

    这会给你:

    ["", "http:", "http", "//www.example.com", "www.example.com", "/path/to/something", "?query", "query", "#fragment", "fragment", ""]
    

    在您的情况下,您可以在哪里轻松检索您的路径:

    const path = exp[5];
    

    因此路径后的第一个单词使用:

    const rootPath = path.split('/')[1];
    

    【讨论】:

    • 你为什么要加".split("/")[1]"?
    • 因为我写这个的时候还年轻……不,实际上这是为了获取rootPath(根据问题作者的要求),我更新了答案。
    【解决方案4】:

    尝试:

    var url = 'http://mysite.com/section-with-dashes/';
    var section = url.match(/^http[s]?:\/\/.*?\/([a-zA-Z-_]+).*$/)[0];
    

    【讨论】:

      【解决方案5】:

      我的正则表达式很糟糕,所以我会用一个效率较低的解决方案即兴发挥:P

      // The first part is to ensure you can handle both URLs with the http:// and those without
      
      x = window.location.href.split("http:\/\/")
      x = x[x.length-1];
      x = x.split("\/")[1]; //Result is in x
      

      【讨论】:

        【解决方案6】:

        这是在 javascript 中获取它的快速方法

        var urlPath = window.location.pathname.split("/");
        if (urlPath.length > 1) {
          var first_part = urlPath[1];
          alert(first_part); 
        }
        

        【讨论】:

          【解决方案7】:
          $url = 'http://mysite.com/section/subsection';
          
          $path = parse_url($url, PHP_URL_PATH);
          
          $components = explode('/', $path);
          
          $first_part = $components[0];
          

          【讨论】:

          • 出于某种原因,我认为 JavaScript 解释器不会喜欢您的 PHP 解决方案。
          • 眨了几下,你可能是对的...但是由于很多人认为Javascript可以在服务器上执行,我可以假装PHP可以在客户端执行:)
          【解决方案8】:

          如果您想获取第一个正斜杠(包括)之后的内容,您可以这样做:

          const linkUrl = pathname.replace(/^(.*\/)/, '$1')
          

          喜欢http://localhost:3000/dashboard/dataExploration 将返回/dashboard/dataExploration

          请注意,这将帮助您根据前反应应用程序中的位置路径名更改活动链接元素:)。

          【讨论】:

            猜你喜欢
            • 2020-05-15
            • 2022-01-27
            • 2022-07-05
            • 2013-11-15
            • 1970-01-01
            • 2017-04-20
            • 2011-04-19
            • 1970-01-01
            相关资源
            最近更新 更多