шаблон preg_match_all для получения телефонных номеров

Я пытался много раз использовать preg_match_all для получения некоторых телефонных номеров.

Вещи, которые я хочу получить без проблем, это следующие структуры:

09123456789
+989123456789
989123456789
0912 345 6789
+98 912 345 6789

Как я могу использовать preg_match_all, чтобы найти верхние числа?

у них могут быть пробелы или нет.

Все они могут начинаться с +98 ИЛИ ЖЕ 98 Для кода страны,

А потом телефон номер должен начинаться с 9 ИЛИ ЖЕ 0,

Я пытался так: (Но это не работает для всех)

/[+989][09]*([0-9]{9,})/i

0

Решение

Я думаю, ты хочешь что-то подобное,

(?:\+?98|0)(?:\s*\d{3}){2}\s*\d{4}

DEMO

<?php
$str = <<<EOT
09123456789
+989123456789
989123456789
0912 345 6789
+98 912 345 6789
EOT;
$regex =  '~(?:\+?98|0)(?:\s*\d{3}){2}\s*\d{4}~';
preg_match_all($regex, $str, $matches);
print_r($matches);
?>

Выход:

Array
(
[0] => Array
(
[0] => 09123456789
[1] => +989123456789
[2] => 989123456789
[3] => 0912 345 6789
[4] => +98 912 345 6789
)

)
1

Другие решения

Попробуй это:

(((\+?98)?|0) ?9[\d ]+)

Посмотреть демо: http://regex101.com/r/rG6qE8/1

1

По вопросам рекламы [email protected]