Php 验证南非手机号码

Php 验证南非手机号码,php,Php,如何验证南非手机号码? 数字必须以国家代码(如+27)开头,最大长度为11位-总共12位,带“+”号。尝试以下正则表达式: ^\+27[0-9]{9}$ 转换为PHP,即: if( preg_match( "/^\+27[0-9]{9}$/", $phoneNumber ) ){ echo "Valid number"; } else { echo "Invalid number"; } 把输入内容去掉,去掉所有不是数字的东西 // rm all but Numbers $input

如何验证南非手机号码?
数字必须以国家代码(如+27)开头,最大长度为11位-总共12位,带“+”号。

尝试以下正则表达式:

^\+27[0-9]{9}$
转换为PHP,即:

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

把输入内容去掉,去掉所有不是数字的东西

// rm all but Numbers
$input = '0123 abc #';
$output = preg_replace('#[^0-9]#', '', $input);
echo($output);
数一数剩余的数字

如果长度为9位,则在“+27”前面加上前缀

如果是11位数,则在“+”前面加上前缀

如果它的长度为10位或小于9位,那么它可能不是有效的电话号码格式?

最好使用Regex-
0((60[3-9]| 64[0-5]| 66[0-5])\d{6}(7[1-4689]| 6[1-3]| 8[1-4])\d{7}

正则表达式测试器-


OP是针对南非手机的,而不仅仅是针对任何南非电话号码

以下正则表达式对我有效:

^(\+27|0)[6-8][0-9]{8}$
  • 允许国际拨号代码或以零开始
  • 南非手机号码以08、07或06开头

不要忘记,未来的数字可能会更长。这不是一个合理的假设,它将在不久的将来。9年后,它仍然是相同的长度。如果你先去掉所有非号码,像
27abc554def23565这样的“电话号码”也是有效的……请不要使用这个。每一个验证电话号码的网站都会让我马上离开。允许连字符和空格,但不要强制使用+。@Coronatus:数字必须在以下条件下进行验证:'数字必须以国家代码开头,如+27,最大长度为11位-总共12位,带“+”号'。允许使用空格和连字符将使数字长度超过12个字符。@Coronatus-我不认为强制用户键入有效电话号码有什么问题,就像输入有效的用户名或电子邮件一样。当您不想保护您的应用程序时,控制用户输入是一个相当好的做法。@Harmenm@Repox-不是每个人(或每个文化背景)都将电话号码作为一个长长的号码列表写入。许多人和文化使用连字符、空格或每个点。非数字字符应该从服务器端删除(请参阅我的答案)。@Coronatus:再看一次问题,它说:
数字必须以国家代码开头,如+27,最大长度为11位-总共12位,带“+”号
。也许这与用户输入无关。0677708709是一个有效的手机号码,但根据上面的正则表达式,它是无效的。
^(\+27|0)[6-8][0-9]{8}$