Diría que no es una buena idea.
Recomiendo usar expresiones regulares simples:
([a-z_][a-z0-9_]{0,30})
Consulte los siguientes enlaces:
https://stackoverflow.com/questions/6949667/cuáles-son-las-reglas-reales-para-linux-usernames-on-centos-6-and-rhel-6
https://unix.stackexchange.com/questions/157426/cuál-es-la-regex-para-validar-los-usuarios-de-linux
Usar '@' en un nombre de usuario haría imposible usar ese nombre de usuario como la parte local de una dirección de correo electrónico, por lo que diría que no es una buena idea.