拼接URL片段

将所有给定的URL片段拼接在一起,然后规范化生成的URL。

  • 使用Array.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('&', '?');

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