我已经多次尝试使用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
我想你想要这样的东西,
(?:'+?98|0)(?:'s*'d{3}){2}'s*'d{4}
演示
<?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
)
)
试试这个:
((('+?98)?|0) ?9['d ]+)
请参阅演示:http://regex101.com/r/rG6qE8/1