3v4l.org

run code in 300+ PHP versions simultaneously
<?php $names = [ 'Pérez-González', 'Domínguez-Díaz', 'Güemez-Martínez', 'Johnson-De Sosa', 'Pérez-De la Cruz', 'smith', 'Pérez De la Cruz-González', 'de Gal-O\'Connell', 'Johnson--Johnson' ]; foreach ($names as $name) { echo "$name is " . (!preg_match("~^\pL+(?:[- ']\pL+)*$~u", $name) ? 'in' : '') . "valid\n"; }

preferences:
25.59 ms | 404 KiB | 5 Q