Skip to content

Latest commit

 

History

History
43 lines (30 loc) · 1.54 KB

url-join.md

File metadata and controls

43 lines (30 loc) · 1.54 KB
标题 标签
URLJoin(将给定的 URL 连接在一起并规范化 URL) string,regexp,advanced(字符串,正则表达式,高级的)

将所有给定的 URL 段连接在一起,然后规范化结果 URL。

  • 使用String.prototype.join('/')组合 URL 段
  • 使用一系列带有各种正则表达式的String.prototype.replace()调用来规范化所得的 URL(删除双斜杠,为协议添加适当的斜杠,在参数之前删除斜杠,将参数与“&”组合以及对第一个参数定界符进行标准化)。

代码如下:

const URLJoin = (...args) =>
  args
    .join('/')
    .replace(/[\/]+/g, '/')
    .replace(/^(.+):\//, '$1://')
    .replace(/^file:/, 'file:/')
    .replace(/\/(\?|&|#[^!])/g, '$1')
    .replace(/\?/g, '&')
    .replace('&', '?');

ts代码如下:

调用方式:

URLJoin('http://www.google.com', 'a', '/b/cd', '?foo=123', '?bar=foo');
// 'http://www.google.com/a/b/cd?foo=123&bar=foo'

应用场景

以下是一个实战示例:

结果如下:

<iframe src="codes/javascript/html/url-join.html"></iframe>