function isAbsoluteUrl(input) {
        return schemeRegex.test(input);
    }
File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start
with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).

1. Host, optional.
2. Path, which may include "/", guaranteed.
3. Query, including "?", optional.
4. Hash, including "#", optional.