diff --git a/index.js b/index.js index 7e9e294..da03db0 100644 --- a/index.js +++ b/index.js @@ -74,7 +74,7 @@ module.exports = (urlString, options) => { if (urlObj.pathname) { // TODO: Use the following instead when targeting Node.js 10 // `urlObj.pathname = urlObj.pathname.replace(/(? { + urlObj.pathname = urlObj.pathname.replace(/((?!:).|^)\/{2,}/g, (_, p1) => { if (/^(?!\/)/g.test(p1)) { return `${p1}/`; } diff --git a/test.js b/test.js index 9333d35..cb14874 100644 --- a/test.js +++ b/test.js @@ -31,6 +31,11 @@ test('main', t => { t.is(normalizeUrl('http://sindresorhus.com////foo/bar'), 'http://sindresorhus.com/foo/bar'); t.is(normalizeUrl('http://sindresorhus.com////foo////bar'), 'http://sindresorhus.com/foo/bar'); t.is(normalizeUrl('//sindresorhus.com/', {normalizeProtocol: false}), '//sindresorhus.com'); + t.is(normalizeUrl('//sindresorhus.com//foo', {normalizeProtocol: false}), '//sindresorhus.com/foo'); + t.is(normalizeUrl('http://sindresorhus.com:5000///foo'), 'http://sindresorhus.com:5000/foo'); + t.is(normalizeUrl('http://sindresorhus.com///foo'), 'http://sindresorhus.com/foo'); + t.is(normalizeUrl('http://sindresorhus.com:5000//foo'), 'http://sindresorhus.com:5000/foo'); + t.is(normalizeUrl('http://sindresorhus.com//foo'), 'http://sindresorhus.com/foo'); t.is(normalizeUrl('//sindresorhus.com:80/', {normalizeProtocol: false}), '//sindresorhus.com'); t.is(normalizeUrl('http://sindresorhus.com/foo#bar'), 'http://sindresorhus.com/foo#bar'); t.is(normalizeUrl('http://sindresorhus.com/foo#bar', {stripHash: true}), 'http://sindresorhus.com/foo');