В плане проверки русскоязычных доменов могу рекомендовать смотреть в сторону конвертации в IDN, т.е. к виду xn--af1bc.net тогда проблем с русским точно не будет. В стандартном наборе таких функций нет, только декодирование. Если есть возможность поставить соответствующий модуль PECL, то на мой взгляд это идеальное решение.
В свое время тоже задавался этим вопросом, изучив кучу доков, написал вот такую регулярку, правда это C++ и boost, но сама регулярка может перебраться и на php