Вы не можете написать регулярное выражение, которое проверяет наличие «хотя бы x символов класса». Конечно, вы можете
preg_match_all('~([a-z][^a-z]*){3}~', "ab'c")
В более сложных случаях вы можете заменить класс чем-то другим, а затем сравнить результаты (или просто использовать четвертый параметр preg_replace):
preg_replace('~[a-z]~', '', "ab'c", -1, $count);
print_r($count); // prints "3"