re = /^(?=.{3,50}$)[^\s\d]*(\s[^\s\d]*)?$/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: dfg dfg dfg sdfg dasfg
Karmen Garcia
João Pedro
Vitor
maxiliamum Lófffffffffffffffffffffffffffffffffffff
Nadál
loriPsium PsisVõèrbizbbbbbbbbbb
Examples of non accepted string:
Jony Cam Vanis
kljsdfklsdfkljsfkldsfkljs dsfkljsdlfldjsfkldjsfljsdlkfjls
sdlfkjsdklfjklsdfjkljsfjsdfljsdlfjsdfkljsdfkljsdlfkjlksf
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