Как в тексте найти телефонные

Получите все номера телефонов из всего объема текста. Вы можете скопировать полностью емейлы, таблицы и любые другие документы, а инструмент гарантированно обнаружит в них мобильные и местные номера. После выгрузки телефоны доступны для сохранения списком в формате txt.

Как использовать инструмент

Скопируйте текст, который вы хотите изменить, и вставьте его в поле. Заполните настройки и нажмите кнопку «Извлечь». Большой текст можно загрузить файлом. Далее скопируйте из соседнего окна получившийся текст или выгрузите файл.

В помощь специалистам

Инструмент будет полезен специалистам по продажам, маркетологам, клиентским менеджерам и другим специалистам. С его помощью вы сможете за мгновение извлечь из текста номер телефона. Программа находит как международные, так и местные форматы номеров.

Преимущества сервиса

TEXTER — это набор бесплатных утилит для правки и форматирования. В одном сервисе собраны все инструменты для моментального редактирования текстов любых объемов. Вы можете привести в нужный вид документы, статьи, рефераты, избавив себя от рутинной работы. Полный список инструментов смотрите на главной странице.

Вы себе сильно усложнили задачу допустив вольность в формате номера телефона. Есть общепринятый формат +7.
Пишите регулярки под каждый формат и вытаскивайте. Задача выполнимая на мой взгляд.

Я бы сделал так: проверял бы номер телефона несколькими регулярками (или объединил бы регулярки для каждого формата в одну). Перед этим — удалить все возможные лишние и оформляющие символы (пробелы, дефисы, скобки, и т.п.), чтобы облегчить задачу и свести число регулярок к минимуму. Если есть текст — можно, например, вернуть ошибку исключение (тк. скорее всего это даже и не совсем телефон). По сути, вам нужно любой ценой минимизировать количество вариантов, и приводить их к одной форме.

Также можно проверять перед регулярками телефон на длину: если строка длиной менее 11 символов, то скорее всего она записана без 8 +7 в начале, и этот префикс стоит добавить, чтобы телефон прошел регулярку (или вернуть ошибку).

Возможно, это костыльное решение и есть лучшее.

Первым делом из текста нужно исключить все специальные символы и сделать все 1 строкой.
Делается это 1 регуляркой
.replace(/[W_]*/g,'')
далее мы должны искать в тексте числовые последовательности содержащие от 6 до 11 цифр.

'@$fr e+7(911)123-2131f_ () f23'.replace(/[W_]*/g,'').replace(/[w]*?([d]{6,12})[w]*/,"$1")

Это самый простой способ, конечно он не без минусов. Если после телефона будет идти цифра, тяжело разобраться в правильности номера. Но и это решается.

Я в своей системе заменяю по функции, и вывожу результат регулярки, рядом вывожу чистую подстроку в которой встречается телефон, по которой операторы могут глазами понять а тот ли это телефон и как он был записан.

15 регулярок для Sublime на все случаи жизни.

Пятилетний ребенок разберется, как через поисковое окошко найти в тексте комбинацию цифр «1999» или «1800». А вот как найти все комбинации из четырех цифр идущих подряд? Или все номера телефонов? Или фрагменты текста внутри html-тегов?

Для решения подобных задач (и не только их) несколько десятилетий назад были придуманы регулярные выражения (Regular Expression). Это универсальная система описания текстовых строк, которая применяется в разных приложениях и языках программирования.

На синтаксисе регулярных выражений останавливаться не будем, а сразу перейдем к практике. А когда вы войдете во вкус, расскажем как расширить свой кругозор в этой теме.

В во всех примерах мы будем использовать Sublime Text. Скачать его установочный файл можно на официальном сайте приложения. При желании можно использовать другой текстовый редактор (список программ с поддержкой регулярных выражений есть в конце статьи).

1. Годы

regular_expression_year
[code]
bd{4}b
[/code]

Итак, у нас есть окно редактора, в котором есть исходный текст и регулярное выражение. Нам нужно сделать следующее:

  1. 1. Нажать Command+F;
  2. 2. Сделать активной кнопку .* в левом нижнем углу;
  3. 3. Вставить регулярное выражение в поисковое окошко и нажать на кнопку Find All;
  4. 4. Нажать Command+C;
  5. 5. Нажать Command+N или выбрать нужный документ;
  6. 6. Нажать Command+V и радоваться результату.

В остальных 14 примерах надо делать тоже самое.

2. Годы с 1900 по 2099

years_from_1900

[code]
b(19|20)d{2}b
[/code]

3. Ссылки

external_link
[code]
(http|ftp|https)://([w_-]+(?:(?:.[w_-]+)+))([w.,@?^=%&:/~+#-]*[[email protected]?^=%&/~+#-])?
[/code]

4. Адреса электронной почты

emails

[code]
b[A-Z0-9._%+-][email protected][A-Z0-9.-]+.[A-Z]{2,}b
[/code]

5. Номера телефонов

telephone_number

[code]
((8|+7)[- ]?)?((?d{3})?[- ]?)?[d- ]{7,10}
[/code]

6. Почтовые индексы

zip_code
[code]
bd{6}b
[/code]

7. IP-адреса (IPv4)

ip_v_4

[code]
(?:[0-9]{1,3}.){3}[0-9]{1,3}
[/code]

8. Содержимое html-тегов

html_tags
[code]
<h3>(.*?)</h3>
[/code]

9. Значения атрибутов html-тегов

html_tag_attribute
[code]
title=[«’]?((?:.(?![«’]?s+(?:S+)=|[>»’]))+.)[«’]?
[/code]

10. Имя+Фамилия

name_surname

[code]
[А-ЯЁ][а-яё]+ [А-ЯЁ][а-яё]+
[/code]

11. Римские цифры

rim_digits

[code]
[MDCLXVI]+
[/code]

12. Широта/Долгота

lat_long
[code]
-?[0-9]{1,3}(?:.[0-9]{1,10})?
[/code]

13. Время

hh_mm
[code]
([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]
[/code]

14. Даты

data

В форматах дд/мм/гггг,дд-мм-гггг или дд.мм.гггг.

[code]
(?:(?:31(/|-|.)(?:0?[13578]|1[02]))1|(?:(?:29|30)(/|-|.)(?:0?[1,3-9]|1[0-2])2))(?:(?:1[6-9]|[2-9]d)?d{2})$|^(?:29(/|-|.)0?23(?:(?:(?:1[6-9]|[2-9]d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1d|2[0-8])(/|-|.)(?:(?:0?[1-9])|(?:1[0-2]))4(?:(?:1[6-9]|[2-9]d)?d{2})
[/code]

15. Числа с десятичными дробями

decimal_numbers

С разделителем запятой:
[code]
[-+]?[0-9]*,?[0-9]+
[/code]
С разделителем точкой:
[code]
[-+]?[0-9]*.?[0-9]+
[/code]

Альтернативы

Естественно, на Sublime Text свет клином не сошелся и есть и другие текстовые редакторы с поддержкой регулярных выражений. Скорее всего, как минимум, с несколькими из них вы в определенной степени знакомы:

  • Atom;
  • BBEdit;
  • Brief;
  • Elvis;
  • Emacs;
  • BBEdit;
  • Brief;
  • Coda;
  • Elvis;
  • Emacs;
  • Microsoft Word;
  • NEdit;
  • Notepad++;
  • NoteTab;
  • Nvi;
  • PSPad;
  • SubEthaEdit;
  • TextMate;
  • TSE;
  • UltraEdit;
  • Vile;
  • Vim.

Полезные веб-сервисы

regexp

На regexr.com можно протестировать регулярные выражения и узнать что обозначают их отдельные синтаксические элементы. Также на этом сайте теоретическая информация по теме.

email_extractor

По моему опыту, люди, которые не знакомы с регулярными выражениями, чаще всего сталкиваются с проблемой, описанной в четвертом пункте этой статьи. Для ее решения можно не заморачиваться, а использовать онлайн-сервис для извлечения email-адресов из текста

Для тех, кто хочет узнать больше

В статье Мой ТОП-9 книг для программистов я упоминала книгу «Регулярные выражения. Сборник рецептов». В ней можно найти много готовых практических примеров, но она не сделает вас «богом регулярок». Для этого понадобится литература посерьезнее.
Авторитетные люди по всему миру рекомендует для глубокого и тонкого понимания этой темы прочитать ставшую классикой книгу Джеффри Фридла «Регулярные выражения».
Но для начала можно пройти онлайн-курс на regexone:
regex_one_online_course

1 Звезд2 Звезды3 Звезды4 Звезды5 Звезд (4 голосов, общий рейтинг: 4.75 из 5)

🤓 Хочешь больше? Подпишись на наш Telegram.

undefined

iPhones.ru


15 регулярок для Sublime на все случаи жизни. Пятилетний ребенок разберется, как через поисковое окошко найти в тексте комбинацию цифр «1999» или «1800». А вот как найти все комбинации из четырех цифр идущих подряд? Или все номера телефонов? Или фрагменты текста внутри html-тегов? Для решения подобных задач (и не только их) несколько десятилетий назад были…

  • полезный в быту софт,
  • хаки

Ирина Чернова avatar

Подскажите регулярное выражение для поиска номера мобильного телефона в тексте.

Номера телефонов вводятся разными пользователями и в совершенно непредсказуемом формате, например могут участвовать -+()_ пробелы и еще не известно на что хватит фантазии.

Примеры телефонов:

8 900 000-00-00

+7 (900) 000 00-00

+7 9001112233

89001112233

8(900) 111-2233

и т.д

задан 5 сен 2017 в 14:51

Alexander Kiselev's user avatar

Alexander KiselevAlexander Kiselev

8201 золотой знак6 серебряных знаков13 бронзовых знаков

2

Как вариант:

/(?:+|d)[d-() ]{9,}d/g
  • Начинается с: «+» или цифры
  • Потом может содержать: цифры, «-«, «(«, «)», пробел. Повторяющиеся 9 и больше раз
  • Заканчивается цифрой

https://regex101.com/r/poJz8C/5

ответ дан 5 сен 2017 в 15:56

MedvedevDev's user avatar

MedvedevDevMedvedevDev

5,17412 серебряных знаков25 бронзовых знаков

Думаю, примерно так:

/(+7|8)[- _]*(?[- _]*(d{3}[- _]*)?([- _]*d){7}|dd[- _]*dd[- _]*)?([- _]*d){6})/g
console.log(
"8 900 000-00-00
+7 (900) 000 00-00
+7 9001112233
89001112233
8(900) 111-2233
8 (1234) 12 12 12
8 (12-34) 12 12 12
8  ( 123 )  412 12 12".match(
/(+7|8)[- _]*(?[- _]*(d{3}[- _]*)?([- _]*d){7}|dd[- _]*dd[- _]*)?([- _]*d){6})/g
))
.as-console-wrapper.as-console-wrapper { max-height: 100vh }

ответ дан 5 сен 2017 в 22:30

Qwertiy's user avatar

QwertiyQwertiy

121k24 золотых знака121 серебряный знак291 бронзовый знак

4

/(?:+|d)[d-() ]{9,}d/g так лучше

NTP's user avatar

NTP

3,1412 золотых знака22 серебряных знака41 бронзовый знак

ответ дан 23 июн 2018 в 21:17

Николай's user avatar

0

Небольшая доработка

(?<=^|s|>|;|:|))(?:+|7|8|9|()[d-() ]{8,}d

Первая группа смотрит вперед, но не попадает в выборку. Нужно, чтобы не срабатывало на параметры в ссылках и подобный мусор.

Второе — с чего начинается номер.

У меня это +, 7, 8, 9 (для сотовых) и с открывающейся скобки — иногда номер пишут начиная с кода города, опуская +7.

Spatz's user avatar

Spatz

4,35623 золотых знака22 серебряных знака25 бронзовых знаков

ответ дан 21 окт 2021 в 9:16

Piconn's user avatar

[0-9| |-|(|)|+]{10,17}[0-9| |-|(|)]

Kromster's user avatar

Kromster

13.5k12 золотых знаков43 серебряных знака72 бронзовых знака

ответ дан 14 янв 2019 в 4:16

дмитрий's user avatar

Простой и понятный вариант можете сами подобрать здесь https://regex101.com/
или вот такой:
/(^[7|8]{0,1}d{10}$)|(^+7{1}d{10}$)/ где
^ — это начало строки.
$ — это конец строки.
[7|8]{0,1} — 7 или 8 могут быть 1 раз или 0 раз.
d{10} — числа должны повторяться 10 раз.
| — знак или.
(^+7{1}d{10}$) — здесь аналогично

ответ дан 18 апр 2020 в 10:36

Максим Каплин's user avatar

1

По просьбе пользователя создаем небольшой утилитарный калькулятор для выбора телефонных номеров из большого блока текста.
Калькулятор использует регулярные выражения, подробнее см. Проверка регулярных выражений.

Вводим текст, на выходе получаем список номеров, встречающихся в тексте.

PLANETCALC, Выбор номеров телефонов из текста

Выбор номеров телефонов из текста

Регулярное выражение

Текст

Модификаторы

Результат

Для справки, используемое регулярное выражение: +?(d?)[s-()]?(d{3})[s-()]?(d{3})[s-()]?(d{2})[s-()]?(d{2})

Понравилась статья? Поделить с друзьями:
  • Как найти дорогие монеты россии
  • Как найти работу в волгограде все вакансии
  • Как найти рабочий подход
  • Как найти поляризацию волны
  • Как исправить продавленный диван в домашних условиях