В имени домена точно не должно быть перевода строки, поэтому только /s.
По поводу /u - сложный вопрос. Лучше было бы сразу конвертировать в Punycode, что-бы оперировать только с английскими доменными именами.
Итого, вытаскиваем TLD:
$patternSub = '/(\.[\-\w\d]{2,})$/si';
Здесь аналогично. Но непонятно, $patternDomainName - это когда из доменного имени уже убран TLD, и опять нужно найти TLD (который .ge)?
$patternDomainName = '/(\.ge)$/si;