Учитывая сообщение об ошибке, которое вы написали, вы усложняете себя.
Вместо поиска по списку символов, которые не являются буквенно-цифровыми, ищите только буквенно-цифровые символы. Попробуйте использовать этот шаблон и не отменяйте условие.
$pattern = "/^[a-zA-Z0-9]+$/";
// Some code...
if(preg_match($pattern, $usern))
// ^-------------------------------Notice the changes
{
//Username is valid
}
Описание рисунка:
^
с начала
[a-zA-Z0-9]
поиск по альфа-номеру
+
1 или более раз
$
до конца
/^[a-zA-Z0-9]+$/
можно заменить на /^[[:alnum:]]+$/
или /^[a-z\d]+$/i
, которые дают тот же эффект.