Sobre os exemplos, alguns comentários:

A regex de email considera que coisas como -.+++@2.3 são emails válidos.

Regex pra email, que não dê esses falsos positivos, é bem mais complicado do que parece. Claro que a regex em questão pega emails válidos, o problema é que também pega muitos inválidos...

Para o slug, a regex considera que uma string vazia é um slug válido (porque o * significa "zero ou mais caracteres", então se não tiver nenhum também serve). Se não era essa a intenção, pode trocar por + (um ou mais caracteres) ou então usar quantidades específicas de acordo com cada caso (ex: {5,} para ter no mínimo 5 caracteres, {5,20} para ter entre 5 e 20, etc).

E na regex do username, acho que faltou um quantificador. Da forma que está (^[a-z0-9-_]$) ele pega somente um caractere.

Nossa, não me atentei a isso 😶, obrigado por me corrigir!

Complementando, a regex do username considera que `_` é um username válido. E tanto o slug quanto o username consideram que um valor com somente dígitos é válido (ex: `1234`). Dependendo do caso, isso pode ou não fazer sentido. O problema de regex é esse, não é tão difícil fazer uma que pegue os casos válidos, mas é mais complicado fazer com que também exclua os inválidos.