Regex: обнаружение телефонных номеров, которые разделены тире (-) и / или пробелами - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь распознать следующие типы телефонных номеров:

  1. 0172665476
  2. + 6265476393
  3. + 62-65476393
  4. +62-654-76393
  5. + 62 65476393

Хотя мое регулярное выражение: (?:\d+\s*)+ может распознавать первые 2 значения выборки, оно распознает последние 3 значения выборки как несколько совпадений в каждомстрока вместо распознавания целого числа.

Как я могу изменить это так, чтобы оно поддерживало несколько тире и / или пробелов и все равно распознавало его как 1 целое число вместо нескольких совпадений?

Ответы [ 4 ]

0 голосов
/ 02 января 2019

Другим вариантом может быть использование чередования для сопоставления либо 10 цифр без начального знака плюс, либо для сопоставления шаблона с + и необязательным пробелом или дефисом:

(?:\d{10}|\+\d{2}[- ]?\d{3}-?\d{5})\b

Это будет соответствовать:

  • (?: Группа без захвата
    • \d{10} Совпадение 10 цифр
    • | или
    • \+\d{2}[-\s]?\d{3}-?\d{5} Соответствует +, 2 цифры, необязательный символ пробела или -, 3 цифры, необязательно -, 5 цифр
  • )\b Закрыть не захватывающую группу и границу слова

Regex demo

Если ваш язык поддерживает отрицательные взгляды, вы можете добавить (?<!\S), который проверяет, что предшествующее не является символом без пробелов.

0 голосов
/ 02 января 2019

Вы можете использовать это регулярное выражение:

^\+?\d+(?:[\s-]\d+)*\b

Подробности RegEx:

  • ^\+?: совпадение необязательно + при запуске
  • \d+: соответствует 1+ цифр
  • (?:[\s-]\d+)*: сопоставить 0 или более групп, начинающихся с пробела или -, за которыми следуют 1+ цифр
  • $: Конец (Заменяется границей слова, как будто есть пробелы, это совпадение будет пропущено.)
0 голосов
/ 02 января 2019

Это будет работать в соответствии с вашим требованием: (Если есть завершающие пробелы, это регулярное выражение будет игнорироваться.)

Регулярное выражение: '^ (?: [\ D + -] +) \ b'

0 голосов
/ 02 января 2019

Это должно работать:

(?:[\d +-]+)+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...