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