Я хотел бы выделить номера телефонов в тексте с помощью PHP-функции preg_replace().
Это работает очень хорошо:
(?=(?:\D*\d\D*){8,14}$)[- \d()+]*
Он почти соответствует этим разным форматам:
01 02 03 04 05
0102030405
+33102030405 01-02-03-04-05
01.02.03.04.05
+33 1 02 03 04 053
(33)102030405
Но теперь я хотел бы запустить его с этим тестовым текстом:
blabla 01 02 03 04 05 blabla 0102030405 blabla +33102030405 blabla 01-02-03-04-05 blabla 01.02.03.04.05 blabla +33 1 02 03 04 05 blabla (33)102030405
Я не говорю бегло регулярное выражение, я пробовал много вещей, но потерпел неудачу.
Спасибо за вашу помощь.
Спасибо Виктор, но 01.02.03.04.05 больше не совпадает
получил их с помощью [+(]?\d(?:[-()+\s\.]*\d){8,14}(?![ -()+\s]*\d) Большое спасибо Виктор !





Ты можешь использовать
[+(]?\d(?:[-()+\s.]*\d){8,14}(?![-()+\s.]*\d)
Подробности:
[+(]? - необязательный + или (\d - цифра(?:[-()+\s.]*\d){8,14} - от восьми до 14 вхождений -, (, ), +, пробела или . символа, а затем цифры(?![-()+\s.]*\d) - сразу за ним не следует -, (, ), +, пробел или . символ, а затем цифра.
Попробуйте
[+(]?\d(?:[-()+\s]*\d){8,14}(?![-()+\s]*\d)