- preg_match: documentation ( source)
<?php
$city = 'asdasd';
$age = 40;
echo ((preg_match('/^(Guadalajara|Monterrey|Puebla)$/i', $city) && $age >= 18 && $age <= 20) || (preg_match('/^(Guadalajara|Monterrey|Puebla)$/i', $city) && $age >= 46) || (!preg_match('/^(Guadalajara|Monterrey|Puebla)$/i', $city) && $age >= 21 && $age <= 45));