Unfortunately I am still getting to grips with the complexities of regular expressions, but I had the same issue.
Instead of trying to match the whole thing, I broke the expression down a bit more to find what differentiated between an [url]http://[/url] requested image and a relative image.
I concluded that you may as well just try to not match on ":", so instead of [http] then try [:]. This should work, since : is not allowed as part of the path apart from in the [url]http://[/url] or in the port specification of the server i.e. [url]www.google.com:80.[/url]
Wither way, it will only be used if specifying the server name, so I think it would be a valid match.