繁体   English   中英

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
?>

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

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

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

这是您更新的代码片段:

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

请注意,就验证而言,上述正则表达式可能仍远非我们所能做到的最好,但至少是一个开始。

以下代码片段将检查手机号码数字是否在 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 位数字
$表示结束

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

echo 1;

}else{

 echo 0;

}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM