如何检查一个号码是巴基斯坦用户的手机号码而不是固定电话号码

时间:2018-05-31 21:48:29

标签: php regex

我所做的是从开头删除+92或0092,并使用以下代码检查它是否是巴基斯坦人的有效手机号码

if(preg_match('/3[0-4][0-9](?:.*)/', $number) == 1) {
   //Pakistani mobile number
} else {
  // not a pakistani mobile number
}

这种做法是对的吗?

3 个答案:

答案 0 :(得分:0)

根据wikipedia: Telephone_numbers_in_Pakistan上的说明,
然后像这样的模式:

^0?3(?:[0-46]\d|55)\d{7}$

或者不考虑运营商5(SCO)的特殊情况:

^0?3[0-6]\d{8}$

或者将国家/地区前缀包含为可选组:

^((?:00|\+)92)?(0?3(?:[0-46]\d|55)\d{7})$

Php Test Snippet:

<?php

$telnumber='03441234567';

if(preg_match('/^((?:00|\+)92)?(0?3(?:[0-46]\d|55)\d{7})$/', $telnumber)) 
{
    echo "matches pattern";
} else 
{
    echo "doesn't match pattern";
}

答案 1 :(得分:0)

(^\+92[0-9]{10}$)|(^\0092[0-9]{10}$)

此处字符串首先附加+92然后检查下一个10位数字,或者如果数字前面有0092则它包含10位数字。 +92和0092最初检查您的ISD代码而不是其他代码。

答案 2 :(得分:0)

只接受 \d{4} 和 9 位 ^((0)(3))([0-9]{9})$