Direi che non è una buona idea.
Consiglierei di utilizzare espressioni regolari semplici:
([a-z_][a-z0-9_]{0,30})
Controlla i seguenti link:
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'uso di "@" in un nome utente renderebbe impossibile l'utilizzo di quel nome utente come parte locale di un indirizzo email, quindi direi che non è una buona idea.