Wiesz, jeżeli nie potrafisz tego zrobić w jednym wyrażeniu (co jest oczywiste, bo jest to trochę trudne), to możesz spokojnie to przetestować w kilku wyrażeniach, np tak:
<?php
function checkPassword($password)
{
//długość hasła
{
return false;
}
//małe litery
{
return false;
}
//duże litery
{
return false;
}
//cyfry
{
return false;
}
//znaki specialne
if(preg_match_all('/[!@#$%^&*()\-_=+{};:,<.>]/', $password, $matches) < 2
) {
return false;
}
return true;
}
lub stworzyć/znaleźć wyrażenie którego nie będziesz rozumiał:
Kod
(?:(?=.*[a-z])(?:(?=.*[A-Z])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[A-Z])(?=.*\d)).{8,}
Daje gotowca tylko dlatego że wyrażenia to nie jest coś łatwego i jeżeli się tego nie rozumie, to wszelkie próby pomocy w zrozumieniu tego raczej niewiele tutaj zmienią.. Zwłaszcza że można łatwo gotowce do twojego problemu znaleźć w różnych językach.