我需要编写一些 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/