【问题标题】:Validate phone number in php在php中验证电话号码
【发布时间】:2014-08-25 12:19:08
【问题描述】:

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

我试过了

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

当我运行脚本时,数字无效。如何使脚本只包含必须以 168 开头的 12 位数字?。

【问题讨论】:

  • 我不确定电话号码验证。您可以测试它是否与模式匹配,但这并不能防止输入错误的数字。

标签: php regex


【解决方案1】:

您的正则表达式错误,1 之前有一个无用的反斜杠。正确:

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

完整代码:

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

【讨论】:

    【解决方案2】:

    您必须删除 1 个斜线:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 小心。它不是通用验证器。它不处理以00+ 符号开头的变体。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 2012-06-06
      • 1970-01-01
      • 2012-10-27
      相关资源
      最近更新 更多