Нет ничего встроенного в PHP, чтобы удовлетворить эти требования. Вот вам регулярное выражение:
$valid = (bool)preg_match('/^[a-zA-Z0-9]{1,30}$/', $username);
Я знаю, что вы не просили критиковать дизайн, но, пожалуйста, подумайте, если имена пользователей действительно необходимы. Если нет, подумайте об использовании адресов электронной почты, поскольку они гораздо более удобны для пользователя, и вы, вероятно, в любом случае попросите пользователя предоставить эту информацию.