Jesli piszesz regexa, wpierw postaraj sie wydzielic w nim pewne elementy.
Widze u ciebie imie i nazwisko. Napiszmy wiec wedle twoich kryteriow regexa sprawdzajace imie.
/[A-Z][a-zA-Z]*/
Tu chyba nie ma co tlumaczyc? 1 litera duza, kolejne male lub duzo w dowolnej ilosci (takze 0).
Teraz nazwisko.
/[a-zA-Z]+(\\*s-\\s*[a-zA-Z]+)?/
Pierwszy czlon to ciag malych lub duzych liter i opcjonalny czlon z 2 nazwiskiem po pauzie (\\s* zjadaja dowolna ilosc bialych znakow po obu stronach - oraz pomiedzy imieniem a nazwiskiem).
W sumie wychodzi regex:
<?php
if (preg_match("/[A-Z][a-zA-Z]*s*[a-zA-Z]+(*s-s*[a-zA-Z]+)?/", $tekst)) { }
?>
Aaa wlasnie doczytalem ze imion moze byc wiecej.
<?php
if (preg_match("/([A-Z][a-zA-Z]*s*)+[a-zA-Z]+(*s-s*[a-zA-Z]+)?/", $tekst)) { }
?>
EDIT:
do kazdego z tych wyrazen trzeba dodac na poczatku ^ a na koncu $, bo sprawdzamy czy caly tekst pasuje do wyrazenia a nie jego czesc.