re = /^((09|\+639)|(|\d{2}|\d{3}))(-|\s)(\d{9}|\d{7})$/m
str = '+639 123456789
09 123456789
02 8324545
034 8324545
+639-123456789
09-123456789
02-8324545
034-8324545
asd
12341234
+63912345
0913456
'
# 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