2017-01-08 3 views
0

Я пытаюсь получить номера телефонов из строки в немецком формате. Но я не добираюсь до конца. Текст ввода - это полная HTML-страница с большим количеством контента, а не только чисел.Regexp для немецкого телефонного номера

Возможные форматы:

(06442) 3933023  
(02852) 5996-0  
(042) 1818 87 9919 
06442/3893023 
06442/38 93 02 3  
06442/3839023 
042/ 88 17 890 0  
+49 221 549144 – 79 
+49 221 - 542194 79 
+49 (221) - 542944 79 
0 52 22 - 9 50 93 10 
+49(0)121-79536 - 77 
+49(0)2221-39938-113 
+49 (0) 1739 906-44 
+49 (173) 1799 806-44 
0173173990644 
0214154914479 
02141 54 91 44 79 
01517953677 
+491517953677 
015777953677 
02162 - 54 91 44 79 
(02162) 54 91 44 79 

я пытался:

$regex = '~(?:\+?49|0)(?:\s*\d{3}){2}\s*\d{4,10}~'; 
if(preg_match_all($regex, $input_imprint , $matches)){ 
    print_r($matches); 
} 

Но это не соответствует лишь несколько форматов. Я понятия не имею, чтобы сделать это :-(

+0

Все перечисленные форматы действительны Есть ли Java на вопрос – chris85

ответ

1
[0-9]*\/*(\+49)*[ ]*(\([0-9]+\))*([ ]*(-|–)*[ ]*[0-9]+)* 

Проверить эту ссылку:.? https://regex101.com/r/CAVex8/1

может ввести ложные срабатывания

+0

By? Мне это не помогло, я включил его в свой пример выше. Я возвращаю это: Массив ([0] => Массив ([0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => [16] => [17] => 08335 [18] => [19] => 99 99 99 ........ Но мне нужно получить назад 08335/99 99 99 или 08335999999 или что-то в этом роде. – Mann87

+0

Исходный текст может, например, выглядеть примерно так: Это большой тест 08331/99 99 99 - это номер – Mann87

+0

Исходный текст может даже быть чем-то вроде «02141 54 91 44 79 и 0 52 22 - 9 50 93 10 являются номерами контактов ", которые не могут быть полностью сопоставлены с использованием регулярного выражения в виде двух отдельных телефонных номеров. Вместо проверки HTML в целом вы можете разбить его на отдельные теги и затем проверить число. Также вы можете проверить, больше ли общая длина согласованных сегментов больше или равна длине стандартного номера немецкого телефона. Данная проблема имеет слишком много краевых случаев, которые могут быть решены один за другим с помощью проб и ошибок. Также вы можете найти [это] (http://www.phpliveregex.com) полезным. –

Смежные вопросы