Executando verificação de segurança...
4

Sobre os exemplos, alguns comentários:

A regex de email considera que coisas como [email protected] 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.

Carregando publicação patrocinada...
1
1

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.