PHP preg_match用于验证10位数的手机号码

时间:2017-11-12 09:47:26

标签: php regex preg-match

我正在尝试使用PHP函数preg_match验证10位数的手机号码。以下代码不会产生任何输出。

正则表达式错了吗?或者我使用不正确。

我在输出中期待Hi True。如果匹配,或Hi False如果不匹配。

<?php
$value = '9987199871';
$mobileregex = "/^[1-9][0-9]{10}$/" ;  
echo "Hi " . preg_match($mobileregex, $value) === 1; // @debug
?>

正则表达式取自https://stackoverflow.com/a/7649835/4050261

4 个答案:

答案 0 :(得分:3)

您声明的正则表达式将匹配 11个数字,而不是10个。由于所有印度手机号码都以9,8,7或6开头,我们可以使用以下正则表达式:

^[6-9][0-9]{9}$

以下是您的代码段更新:

$value = '9987199871';
$mobileregex = "/^[6-9][0-9]{9}$/" ;  
echo "Hi " . preg_match($mobileregex, $value) === 1;

请注意,上述正则表达式仍然可能远不是我们在验证方面所做的最好的,但它至少是一个开始。

答案 1 :(得分:2)

以下代码段将检查手机号码的数字是否在10到15位之间,包括开头的“ +”和后面的非零数字。

正则表达式

"/^[+]?[1-9][0-9]{9,14}$/"

代码段

// Validation for the mobile field.
function validateMobileNumber($mobile) {
  if (!empty($mobile)) {
    $isMobileNmberValid = TRUE;
    $mobileDigitsLength = strlen($mobile);
    if ($mobileDigitsLength < 10 || $mobileDigitsLength > 15) {
      $isMobileNmberValid = FALSE;
    } else {
      if (!preg_match("/^[+]?[1-9][0-9]{9,14}$/", $mobile)) {
        $isMobileNmberValid = FALSE;
      }
    }
    return $isMobileNmberValid;
  } else {
    return false;
  }
}
正则表达式的

^ 符号表示开始
[+]?确保在开始处允许使用单个(或零个)+符号
[1-9] ,请确保第一个数字为非零数字
[0-9] {9,14} 将确保9到14位数字
$ 表示结尾

答案 2 :(得分:1)

$mob = "9513574562";
if(preg_match("/^\d+\.?\d*$/",$mob) && strlen($mob)==10){

echo 1;

}else{

 echo 0;

}

preg_match()检查它是否为整数,而在strlen()中,它检查此字符串中没有数字。如果2条件满足那么它是10位有效的移动没有​​

答案 3 :(得分:0)

对于巴基斯坦手机号码,正则表达式代码如下

^[9][2][3][0-9]{9}$