What about an IPv6 URL, e.g. http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.ht...
However as others already pointed out, it's better not to use a regex for it, but a proper library for your language which would bail out as soon as it hits something invalid. With the hope that the library for the language does support that already.