来自 URL 的正则表达式 URL 路径

新手上路,请多包涵

我遇到了一些正则表达式问题。

我正在尝试获取此网址中的路径 videoplay

 http://video.google.co.uk:80/videoplay?docid=-7246927612831078230&hl=en#hello

如果我使用这个正则表达式 /.+ 它也匹配 /video

我需要某种反/负匹配不包括 //

原文由 ThomasReggi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 553
2 个回答

此表达式获取 videoplay 之后的所有内容,也就是 url 路径。

 /\/(videoplay.+)/

此表达式获取端口后的所有内容。也由路径组成。

 /\:\d./(.+)/

但是,如果使用 Node.js 我推荐本机 url 模块。

 var url = require('url')
var youtubeUrl = "http://video.google.co.uk:80/videoplay?docid=-7246927612831078230&hl=en#hello"
url.parse(youtubeUrl)

所有的正则表达式都适合你。

 {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'video.google.co.uk:80',
  port: '80',
  hostname: 'video.google.co.uk',
  hash: '#hello',
  search: '?docid=-7246927612831078230&hl=en',
  query: 'docid=-7246927612831078230&hl=en',
  pathname: '/videoplay',
  path: '/videoplay?docid=-7246927612831078230&hl=en',
  href: 'http://video.google.co.uk:80/videoplay?docid=-7246927612831078230&hl=en#hello'
}

原文由 ThomasReggi 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您的 JavaScript 网络应用程序需要这个:我在这个主题上找到的最佳答案就 在这里。代码的基本(也是原始)版本如下所示:

 var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";

parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port;     // => "3000"
parser.pathname; // => "/pathname/"
parser.search;   // => "?search=test"
parser.hash;     // => "#hash"
parser.host;     // => "example.com:3000"

谢谢 John Long,你是白天造的!

原文由 Vlad Mysla 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题