Files
30-seconds-of-code/snippets/URLJoin.md
Angelos Chalaris fca48e797e Add URLJoin.md
2018-01-16 15:53:03 +02:00

748 B

URLJoin

Joins all given URL segments together, then normalizes the resulting URL.

Use String.join('/') to combine URL segments, then a series of String.replace() calls with various regexps to normalize the resulting URL (remove double slashes, add proper slashes for protocol, remove slashes before parameters, combine parameters with '&' and normalize first parameter delimiter).

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'