Szukam, szukam, czytam i nadal nie jestem w stanie tego zrobić

Robię w ten sposób:
if(!preg_match('/^([a-ż0-9():;_\.\,\?]+)$/i', $list)){ print "<br><br><font color=\"#d03b3b\"><b>Użyto niedozwolonych znaków w treści listu.</b></font><meta http-equiv=\"Refresh\" content=\"1; url=poczta.php?view=sprawdz\">"; }
próbowałem też w ten:
if(!preg_match('/^([a-ż0-9_\.\,\?():;]+)$/i', $list)){ print "<br><br><font color=\"#d03b3b\"><b>Użyto niedozwolonych znaków w treści listu.</b></font><meta http-equiv=\"Refresh\" content=\"1; url=poczta.php?view=sprawdz\">"; }
I nadal nie działa jak moge zapisać preg match aby mi wykrywało litery, cyfry, , . ? () ; : tylko tyle chcę.