$re = '/(?mi)^[A-Za-zÀ-ú](?!(?:.*\.\/\ ){2})(?!(?:.* ){10})(?!.*\.[a-z])[A-Za-zÀ-ú. \'-]{5,99}[A-Za-zÀ-ú]$/m';
$str = 'Maria Luiza Barreto
Maria Luíza barreto da silva
José João
José João Paulo
José João Silva
Maria Silva
Maria silva
maria Silva
MariaSilva
Maria Silva
Maria Silva
Maria da Silva
Marina Silva
Maria / Silva
Maria Silva
Maria Silva
Maria G. Silva
Maria McDuffy
Getúlio Dornelles Vargas
Maria das Flores
John Smith
John D\'Largy
John Doe-Smith
John Doe Smith
Hector Sausage-Hausen
Mathias d\'Arras
Martin Luther King Jr.
Ai Wong
Chao Chang
Alzbeta Bara
Marcos Assunção
Maria da Silva e Silva
Juscelino Kubitschek De Oliveira
Natalia maria
Natalia aria
Natalia orea
Maria dornelas
María Luiza
Samuel eto\'
Maria da Costa e Silva
Samuel Eto\'o
Maria Luiza Barreto Da Silva
Nathali Grasiela Quintans Andrade da Silva Barreto
Nathali G. Q. A. Da S. Barreto
María
M
Petros barreto da silva
M D
(?<! )[A-Za-zÀ-ú\']{2,}\\\\s[A-Za-zÀ-ú\' ]{2,}';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php