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 位手机号码的主要内容,如果未能解决你的问题,请参考以下文章