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}$'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
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 Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html