Consider all valid protocol characters

Protocols may include more than just \w - Hyphens, digits, dashes and plus are allowed.
(Spec: http://www.ietf.org/rfc/rfc1738.txt, Section 2.1)

Most of those aren't common, but I stumbled upon the missing dash when working with a chrome-extension:// URI.