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

Posted

技术标签:

【中文标题】PHP preg_match 用于验证 10 位手机号码【英文标题】:PHP preg_match for validating 10 digit mobile number 【发布时间】:2017-11-12 09:47:26 【问题描述】:

我正在尝试使用 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://***.com/a/7649835/4050261

【问题讨论】:

【参考方案1】:

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

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

这是你的代码 sn-p 更新:

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

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

【讨论】:

我正在验证印度手机号码。 感谢您的指出。正则表达式在这个答案中建议。 - ***.com/a/3813226/4050261 除了 according to this Wikipedia page 似乎是错误的,它指出印度手机号码也可以以 6 开头。 6 用于寻呼机。感谢您指出这一点。将使用您的方法。 @AdarshMadrecha 如果您有后续问题,请随时联系我 :-)【参考方案2】:

以下代码 sn-p 将检查手机号码位数是否在 10-15 位以内,包括开头的“+”,后跟非零的第一个数字。

正则表达式

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

代码sn-p

// 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 位数字$ 表示结束

【讨论】:

【参考方案3】:
$mob = "9513574562";
if(preg_match("/^\d+\.?\d*$/",$mob) && strlen($mob)==10)

echo 1;

else

 echo 0;


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

【讨论】:

preg_match() 检查它是否为整数,并且在 strlen() 中检查此字符串中的数字。如果满足2个条件则为10位有效手机号。 谢谢@Milan Krushna,但我的意思是编辑你的答案 我的意思是你应该编辑你的答案添加解释,以便其他用户阅读并投票。也许问题得到验证,你会得到积分 我应该为这个答案添加什么解释? 让我们continue this discussion in chat。【参考方案4】:

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

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

【讨论】:

为什么在字符类中放个位数?这没有意义。 因为我们需要 923 个固定数字在前面 3 位 前 3 位数字必须是 923 所以,^923[0-9]9$ 匹配相同的东西并且更具可读性。但这并不能回答问题。

以上是关于PHP preg_match 用于验证 10 位手机号码的主要内容,如果未能解决你的问题,请参考以下文章

使用 preg_match 在 PHP 中解析 A​​pache 日志

PHP常用正则验证

PHP验证类

几个常用的正则函数

php表单 - 验证邮件和URL

Preg_Match 用于 YouTube 观看次数