验证php中的电话号码

时间:2014-08-25 12:19:08

标签: php regex

我正在制作一个电话号码验证器,所有号码都应以168开头,然后是9位123456789。总的来说,电话号码应该只有12位数。

我试过这个

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

当我运行脚本时,该数字无效。如何让脚本只取12个必须以168开头的数字?

3 个答案:

答案 0 :(得分:7)

你的RegEx错了,1之前有一个无用的反斜杠。正确的:

/^168[0-9]{9}$/

完整代码:

$phoneNumber = '168921500789';
if( preg_match( "/^168[0-9]{9}$/", $phoneNumber ) ){
  echo "Valid number";
} else {
  echo "Invalid number";
}

答案 1 :(得分:3)

你必须删除1斜杠:

$phoneNumber = '168921500789';
    if( preg_match( "/^168[0-9]{9}$/", $phoneNumber ) ){
  echo "Valid number";
} else {
  echo "Invalid number";
}

答案 2 :(得分:1)

我们像这样使用,引用了这个link

public function validatePhoneNumber($number){
 $formats = array(
    '###-###-####', '####-###-###',
    '(###) ###-###','####-####-####',
    '##-###-####-####','####-####','###-###-###',
    '#####-###-###', '##########', '#########',
    '# ### #####', '#-### #####'
 );

 $format = trim(preg_replace('/[0-9]/', '#', $number));
 return (in_array($format, $formats)) ? true : false;
}