Я посмотрел на регулярное выражение в ссылке, которую вы предоставили. Причина, по которой он не соответствует "uk", заключается в том, что в этих примерах встречается больше \.\w+
, чем в других. Вы можете просто добавить квантификатор в эту последнюю группу, чтобы он работал:
^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^.]+)((?:[.,]\w+)){1,2}
Кроме того, нужна ли запятая в классе символов последней группы? Если нет, вы можете упростить регулярное выражение до:
^(?:https?:\/\/)?(?:[^@\n]+@)?(?:\w+)(?:\.\w+)+