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

PHP preg_match for validating 10 digit mobile number

我正在尝试使用 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
?>

取自

的正则表达式

您声明的正则表达式将匹配 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;

请注意,在验证方面,上述正则表达式可能仍远未达到我们所能做到的最佳水平,但这至少是一个开始。

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

echo 1;

}else{

 echo 0;

}

preg_match() 检查它是否为整数,并且在 strlen() 中检查此字符串中的数字。如果2个条件满足则为10位有效手机号

以下代码片段将检查手机号码是否在 10-15 位数字之间,包括开头的“+”和后跟 non-zero 第一个数字。

正则表达式

"/^[+]?[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 个数字
$表示结束

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

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