Não entendi a Regex utilizada pelo instrutor, pois ele usa positives loakaheads(?=) e um negative lookahead(?!) não no sentido que a documentação de Regex explica.
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?!.*[!@#$%&^*_=+-]).{8,12}$
Alguém poderia me explicar o funcionamento dessa regex, por favor?