¿Qué está mal con esta expresión regular de PHP para hacer la validación de la contraseña?

ereg("/^(?=.*[a-z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])(?=.*[A-Z]).{7,19}$/","ABCabc123!!");

Se supone que este es un validador de contraseñas, que requiere alfabetos en mayúsculas y minúsculas, junto con números, caracteres especiales y una longitud mínima de 8 ... pero lo anterior devuelve falso. ¿Qué estoy haciendo mal?

Respuestas a la pregunta(2)

Su respuesta a la pregunta