构建电话号码正则表达式过滤器


Build phone number regex filter

我需要使用reg ex 进行电话号码过滤

这是我的代码

<?php
$LIST =['1234123', '0121234123', '123-1234', '1234-123','0123-123-1234',
'123 4123', '012a1234123', '123x1234', '12341-23', '012-3123-1234'];
$regex = '/('d{3}-'d{4}$)|('d{4}-'d{3}$)|('d{3,4}-'d{3}-'d{4}$)|('d{3,4}-'d{4}-'d{3}$)|(^[0-9]{7,10}$)/';
foreach ($LIST as $key => $value) 
{
    echo $value.">>".(preg_match($regex, $value)).'<br/>';
}
?>

这是的结果

1234123>>1
0121234123>>1
123-1234>>1
1234-123>>1
0123-123-1234>>1
123 4123>>0
012a1234123>>0
123x1234>>0
12341-23>>0
012-3123-1234>>1

让我困惑的是最后一个
我想做最后一个要给出0的结果,同时保持其余的结果。

处理电话号码并不是那么容易。不同国家、不同运营商的电话号码可能不同,等等。

我建议您使用一个电话号码库,而不是使用regex:libphoneNumberforphp。

该库可用于解析、格式化、存储和验证国际电话号码。这个库是基于谷歌的libphonenumber。