Как получить телефон из текста с помощью регулярного выражения

Практический пример: найти телефон в строке, выбрать regex из справочника, оставить найденный номер и привести его к единому формату.

Телефон в источнике часто приходит не отдельным чистым номером, а строкой вроде Тел.: +7 (999) 123-45-67, доб. 10. В настройках значения можно найти номер регулярным выражением, оставить найденный фрагмент и затем привести его к нужному формату.

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

Выберите регулярное выражение из справочника

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

  1. Откройте настройки значения с телефоном.
  2. Добавьте правило, выберите условие регулярное выражение.
  3. Нажмите звездочку и выберите пресет для телефона.
  4. В действии выберите удалить все, кроме и сохраните правило.
Анимация выбора регулярного выражения для телефона из справочника Eofferix
Пресет подставляет шаблон в поле регулярного выражения; при необходимости его можно отредактировать вручную.

Вариант 1: оставить найденный телефон

Такой вариант подходит, когда нужно убрать текст вокруг номера, но сохранить формат номера как в источнике.

БылоПравилоСтало
Контакт: +7 (999) 123-45-67, доб. 10\+?\d[\d\s().-]{8,}\d + удалить все, кроме+7 (999) 123-45-67
телефон 7 812 555 01 02\+?\d[\d\s().-]{8,}\d + удалить все, кроме7 812 555 01 02

Вариант 2: получить номер в едином виде

Если нужен формат с одним плюсом в начале, настройте последовательность из трех правил: сначала оставьте найденный телефон, затем удалите все символы кроме цифр через регулярное выражение \D+, после этого добавьте + в начало, когда текущее значение не пустое.

Настройки последовательных правил для очистки телефона и добавления плюса в Eofferix
Второе правило удаляет все нецифровые символы регулярным выражением, третье добавляет плюс к непустому значению.
БылоПоследовательностьСтало
Тел.: +7 (999) 123-45-67, доб. 10оставить телефон → удалить \D+ → если текущее значение не пустое, добавить ++79991234567
7 812 555 01 02оставить телефон → удалить \D+ → если текущее значение не пустое, добавить ++78125550102

Что важно помнить

  • Оператор удалить все, кроме оставляет первое найденное совпадение целиком. Он не собирает все найденные цифры по одной.
  • Для очистки номера до цифр используйте регулярное выражение \D+ с действием удалить подстроку.
  • Для локальных правил замены кода страны добавьте отдельное правило перед финальным добавлением +.