Зачем использовать регулярные выражения?PHP имеет некоторую встроенную функциональность, чтобы
<?php
$valid_symbols = array('-', '_');
$string1 = "This is a string*";
$string2 = "this_is-a-string";
if(preg_match('/\s/',$string1) || !ctype_alnum(str_replace($valid_symbols, '', $string1))) {
echo "String 1 not acceptable acceptable";
}
?>
preg_match('/\s/',$username)
проверит пробел
!ctype_alnum(str_replace($valid_symbols, '', $string1))
проверит valid_symbols