re = /((\+?\d{1,3}[\d{2,}\.\- \(\)]{11,}))|(\+?[\d]{10,})/m
str = 'Приветствую!
Можете помочь составить регулярное выражение чтобы вырезать номера телефонов из текста?
Для чего это нужно?
Для вырезки из текста +22 (999) 555-66-29 формы сообщения - телефонов спамеров.
Вариантов написания телефонов достаточно много.
Как учесть все варианты я не понимаю.
Телефоны имеют разное количество цифр: 10, 11, 12.
Разное написание:
+7 999 999 99 99
7 999 999 99 99
+7999 999 99 99
7999 999 99 99
+7999-999-99-99
7999-999-99-99
+7999-999-9999
7999-999-9999
+7999-9999999
7999-9999999
+79999999999
79999999999
+7.999.999.99.99
+7(999) 999-99-99
+123 (999) 555-66-29
и вместо цифры страны с оной цифрой 7, есть коды по 2 и по 3 цифры.
Можно придумать и ещё много вариантов написания номера телефона.
Как это всё учесть в выражении?
В тексте могут содержаться ссылки +555 (999) 555-66-29 на фотографии и ссылки на страницы сайта, в которых могут быть цифры. Как не зацепить цифры в ссылках? Как их отсортировать от номеров телефонов?
Можете помочь?'
subst = 'убито '
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