javascript - 从 URL 中删除主机名和端口的正则表达式?

标签 javascript regex

我需要编写一些 javascript 来从 url 中去除主机名:端口部分,这意味着我只想提取路径部分。

即我想写一个函数 getPath(url) 这样 getPath("http://host:8081/path/to/something ") 返回 "/path/to/something"

这可以使用正则表达式来完成吗?

最佳答案

RFC 3986 ( http://www.ietf.org/rfc/rfc3986.txt ) 在附录 B 中说

下一行是分解a的正则表达式 将格式良好的 URI 引用到其组件中。

  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
   12            3  4          5       6  7        8 9

上面第二行的数字只是为了提高可读性; 它们指示每个子表达式的引用点(即每个 双括号)。我们引用匹配子表达式的值 作为$。比如将上面的表达式匹配到

  http://www.ics.uci.edu/pub/ietf/uri/#Related

导致以下子表达式匹配:

  $1 = http:
  $2 = http
  $3 = //www.ics.uci.edu
  $4 = www.ics.uci.edu
  $5 = /pub/ietf/uri/
  $6 = <undefined>
  $7 = <undefined>
  $8 = #Related
  $9 = Related

哪里<undefined>表示该组件不存在,原样 上例中查询组件的情况。因此,我们 可以将五个分量的值确定为

  scheme    = $2
  authority = $4
  path      = $5
  query     = $7
  fragment  = $9

关于javascript - 从 URL 中删除主机名和端口的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/441755/

相关文章:

Java : how to get text between "http://" and first following "/" occurence ? 在第一次 "/"出现之后?

javascript - JS : Test if string contains any unicode capital

regex - Perl:从文件中的每一行抓取第n个和第m个定界字

javascript - Alfresco - 如何创建使用存储库 Web 脚本的共享 Web 脚本?

javascript - 使用 PHP 数据库中的值自动突出显示

javascript - 将 `with` 语句与代理一起使用是一种不好的做法吗?

regex - 使用正则表达式从 aws s3 url 中提取存储桶名称

javascript - 在 for 循环中索引对象,保留点击信息

javascript - 是否可以在闭包中使用外部定义的函数

ruby - 如何检查字符串是否仅包含 Ruby 中的空格和字母?