Мое предложение для проверки надежности пароля состоит в том, чтобы разбить каждое ваше требование на отдельные регулярные выражения, в частности:
$regexs = array(
'/[0-9]+/', // Numbers
'/[a-z]+/', // Lower Case Letters
'/[A-Z]+/', // Upper Case Letters
'/[+-=]+/', // Your list of allowable symbols.
);
Инициализировать счетчик равным 0. Для каждого регулярного выражения проверьте, соответствует ли оно.Если это так, увеличьте счетчик на 1. Затем верните true, если счетчик больше 3 (или 4, если вы хотите, чтобы у них был действительно надежный пароль), в противном случае верните false.
Я думаю, что это будетГораздо более приемлемо для вас в долгосрочной перспективе, если ваши требования когда-либо изменятся.