2010-10-30 97 views
6

我如何验证南非手机号码? 该号码必须以国家代码开头,例如+27,最长11位数字 - 共有12个带“+”号。Validate南非手机电话号码

+1

不要忘记未来的数字可能会更长。 – 2010-10-30 09:14:00

回答

6

尝试一个正则表达式,如:

^\+27[0-9]{9}$ 

转换为PHP,这将是:

if(preg_match("/^\+27[0-9]{9}$/", $phoneNumber)){ 
    echo "Valid number"; 
} else { 
    echo "Invalid number"; 
} 
+1

请不要使用它。每个验证电话号码的网站都会让我立即离开。允许连字符和空格,不要强制+。 – 2010-10-30 09:20:01

+0

@Coronatus:必须在这些条件下验证号码:'号码必须以国家代码开头,例如+27,最长11位数字 - 共有12个“+”符号。允许空格和连字符会使数字超过12个字符。 – Harmen 2010-10-30 09:45:50

+0

@Coronatus - 在强制用户输入有效的电话号码时,我看不到问题 - 就像有效的用户名或电子邮件一样。当你不想保护你的应用程序时,控制用户输入是一个相当好的做法。 – Repox 2010-10-30 09:47:24

0
$number = preg_replace('/[^0-9]/', '', $number); 
if ((substr($number, 0, 2) != '27') || strlen($number) != 11) 
{ 
    return false; 
} 
// else valid 
+0

如果你先去掉所有非数字,那么'27abc554def23565'这样的'电话号码'也是有效的...... – Harmen 2010-10-30 09:17:50

1

采取输入并去掉一切这不是一个号码。

// rm all but Numbers 
$input = 'abC#'; 
$output = preg_replace('#[^0-9]#', '', $input); 
echo($output); 

计算剩余的数字。

如果它是9位数字长,在前面加上“27”

如果是11位长添加前置“+”

如果是10位长或小于9,则推测其是不是有效的电话号码格式?