модифицировать регулярное выражение так, чтобы оно находило пространство и накладывало ограничение на минимальную длину - PullRequest
2 голосов
/ 22 апреля 2019

В настоящее время у меня есть следующее регулярное выражение

(?:(?<=^)|(?<=\s))(?:\+62|08)\S+\b

проблема в том, что он не может найти тексты типа

0823 2371 2318

или

+62812 2712 2819

в основном то, чтоследует 08 или +62 может быть число от 0-9 или один пробел или точка или _ Я также должен ограничить таким образом, чтобы он должен был найти 10 или более символов

Ответы [ 2 ]

3 голосов
/ 22 апреля 2019

Вы можете использовать

(?:\+62|08)[\s._-]?(?=[\d\s._-]{8})\d+(?:[\s._-]\d+)*\b

См. Демоверсию regex

Подробности

  • (?:\+62|08)- +62 или 08
  • [\s._-]? - пробел, ., _ или -
  • (?=[\d\s._-]{8}) - должно быть 8 цифр / пробел /точки / дефисы или подчеркивания непосредственно справа от текущего местоположения
  • \d+ - 1+ цифр
  • (?:[\s._-]\d+)* - ноль или более повторений пробела / точки / подчеркивания / дефисов изатем 1+ цифр
  • \b - граница слова.

Если вам нужно ограничить его для соответствия подстрок только 10 цифрами или более, замените заглядывание (?=[\d\s._-]{8}) на (?=(?:[\s._-]*\d){8}), см. это демо регулярных выражений , или используйте (?:\+62|08)(?:[\s._-]*\d){8,}\b регулярных выражений .

0 голосов
/ 24 апреля 2019

Этот RegEx делит ваши телефонные номера на три группы и может соответствовать вашим желаемым шаблонам во входной строке:

(\+62|08)([0-9]+)(\s[0-9]{4})+

enter image description here

Вы можете просто добавить другие границы, кроме +62 или 08 к этим группам, если хотите.


Редактировать: Я не уверен, охватит ли это ваши входные сэмплы.Вы можете изменить его, используя RegEx, например этот :

(\+62|08)([0-9\.\-\s\_]{3,14})

enter image description here

...