re = /^.*?(\+?(?:\d{11,14})|(?:\d{5}\s(?:\d{3}\s\d{3}|\d{6}))|(?:\d{3}(?:\s\d{3}){3})|(?:\d{4}\s\d{3}\s\d{3})).*$/m
str = 'This is sample. 775 657 7576 sample
Second sample line. 661-525-5366 sample 123
Third line sample 466.755.7888.
07123452670
07812 345 931
07412 123466
00447912345188
+971557017442
+971 557 856 832
0414 934 993
So basically, I need a regex for matching 11 digits. (07123456270)
Matching 5 digits, followed by space, followed by 3 digits, followed by space, followed by 3 digits. (07812 345 931)
Matching 5 digits, followed by space, followed by 6 digits (07412 123466)
Matching 14 digits (12345678901234)
Matching a + sign followed after with 12 digits (+971557017442)
Matching + followed with 3 digits, space, followed by 3 digits, space, 3 more digits (+971 557 856 832)
Last one, 4 digits, space, 3 digits, space, 3 digits. (0414 934 993)
Someone please help'
subst = '$1'
result = str.gsub(re, subst)
# Print the result of the substitution
puts result
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