| DNS:: (part:: [a-zA-Z0-9\-]++) ++/ "."
Port:: = (":" `tok.Int)?
-username:: = [a-zA-Z0-9;/?:&=$\-_.+]++
-password:: = [a-zA-Z0-9;/?:&=$\-_.+]++
+username:: = [a-zA-Z0-9;?:&=$\-_.+]++ // slashes in usernames conflict with urls
+password:: = [a-zA-Z0-9;?:&=$\-_.+/]++
method:: = [+\-.a-z0-9]+
urlchar = urlc
- | "%":: "%" [0-9] [0-9]
+ | "%":: "%" [0-9a-fA-F] [0-9a-fA-F]
urlc = [a-zA-Z0-9;/?:&=$\-_.+]
| [@~,] // technically illegal (RFC1738)