На PHP в UTF-8 необходимо использовать модификатор u
Выдержка из мануала:
u (PCRE_UTF8)
This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5.
Выражение примет вид /^([a-z \.\-]{1,20}|[а-яё \.\-]{1,20})$/ui