Validación de contraseña regex

Estoy tratando de obtener una expresión regular que haga lo siguiente:

  1. se asegura de que no haya caracteres en el espacio en blanco
  2. longitud mínima de 8
  3. se asegura de que haya al menos:
    • un personaje no alfa
    • un personaje en mayúscula
    • un carácter minúsculo

Encontré esta expresión regular:

((?=.*[^a-zA-Z])(?=.*[az])(?=.*[AZ])(?!\s).{8,}) 

que se ocupa de los puntos 2 y 3 anteriores, pero ¿cómo agrego el primer requisito a la expresión de expresiones regulares anterior?

Sé que puedo hacer dos expresiones la de arriba y luego

 \s 

pero me gustaría tenerlo todo en uno, intenté hacer algo así como ?!\s pero no pude hacerlo funcionar. ¿Algunas ideas?

 ^(?=.*[^a-zA-Z])(?=.*[az])(?=.*[AZ])\S{8,}$ 

debería hacer. Tenga en cuenta, sin embargo, que solo está validando letras ASCII. ¿No es una carta para sus requisitos?

\S significa “cualquier carácter, excepto espacios en blanco”, así que al usar esto en lugar del punto y al anclar la expresión regular al inicio y al final de la cadena, nos aseguramos de que la cadena no contenga ningún espacio en blanco.

También eliminé los paréntesis innecesarios alrededor de toda la expresión.

La respuesta de Tim funciona bien y es un buen recordatorio de que hay muchas maneras de resolver el mismo problema con las expresiones regulares, pero usted estaba en el camino correcto para encontrar una solución usted mismo. Si hubiera cambiado (?! \ S) a (?!. * \ S) y hubiera agregado los anclajes ^ y $ al final, funcionaría.

 ^((?=.*[^a-zA-Z])(?=.*[az])(?=.*[AZ])(?!.*\s).{8,})$