Yep. I fear regexp aren’t easy anymore since we got Unicode domains. You could probably go for an additional (xn--)? for IDN domains, though. (♡.com, for instance, resolves to xn--c6h.com.)
So it was the port—should have seen that, sorry. And I missed the s?, sorry again! 
Be also aware of long TLDs: \.[a-z]{2,4} won’t catch TLDs like .bayern, .local and so on. As far as I know, TLDs can be 2–63 characters long.
Some countries like the British and Japanese also make heavy use of second-level domains, like in something.co.uk.
Plus, machines in the local network like my http://studio1:9000 often don’t specify a TLD altogether but rely on the DNS resolver to do its work.
Cheers for all your help!