Je dirais que ce n'est pas une bonne idée.
Je vous recommande d'utiliser une expression régulière simple :
([a-z_][a-z0-9_]{0,30})
Vérifiez les liens suivants :
https://stackoverflow.com/questions/6949667/what-are-the-real-rules-for-linux-usernames-on-centos-6-and-rhel-6
https://unix.stackexchange.com/questions/157426/what-is-the-regex-to-validate-linux-users
L'utilisation de '@' dans un nom d'utilisateur rendrait impossible l'utilisation de ce nom d'utilisateur comme partie locale d'une adresse e-mail, donc je dirais que ce n'est pas une bonne idée.