Я не проводил много испытаний по этому вопросу, но если я понимаю, о чем вы просите, это должно стать хорошей отправной точкой ...
([A-Za-z0-9-]+\.([A-Za-z]{3,}|[A-Za-z]{2}\.[A-Za-z]{2}|[A-za-z]{2}))\b
РЕДАКТИРОВАТЬ:
Чтобы уточнить, он ищет:
один или несколько буквенно-цифровых символов или тире, за которыми следует буквальная точка
и затем одна из трех вещей...
- три или более буквенных символа (т. Е. Com / net / mil / coop и т. Д.)
- два буквенных символа, за которыми следует буквальная точка, за которой следуют еще два альфа(т. е. co.uk)
- два буквенных символа (т. е. us / uk / to и т. д.)
и в конце этого слова граница (\ b), означающаяконец строки, пробел или несловесный символ (в регулярных выражениях символами слов обычно являются буквенно-цифровые символы и подчеркивание).
Как я уже говорил, я не проводил много испытаний, но казалось,разумная отправная точка.Вам, скорее всего, придется попробовать и немного его настроить, и даже в этом случае маловероятно, что вы получите 100% для всех тестовых случаев.Существуют такие соображения, как доменные имена Unicode и все виды технически обоснованных, но вряд ли вы встретите диких вещей, которые приведут в порядок простое регулярное выражение, подобное этому, но это, вероятно, получитвам 90% + пути туда.