$re = '/^(?=.{3,50})\p{L}*(\s\p{L}*)?$/m';
$str = 'I need a RegEx to match the following condition:
1 or 2 words
Total minimum length is 3
Total maximum length is 50
Accept accented characters
No numbers is a plus
Examples of accepted strings:
Karmen Garcia
João Pedro
Vitor
maxiliamum LóPezz
Nadál
loriPsium PsisVõèrbizbbbbbbbbbb
Examples of non accepted string:
Jony Cam Vanis
9lucas P.us-kas1 Li1
What I tried:
^(?!.*?\\s{2})[A-Za-z ]{3,50}$
^([a-zA-Z][a-zA-Z]){3,50}$';
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