以下是我验证电话号码的代码。问题是电话号码无效,它仍然返回true。怎么解决这个问题?
$pattern = '/\(?[\d]{3}\)?\s?\-?[\d]{3}\s?\-?[\d]{4}/';
$str = array(
"702 622 0277",
"(702)622-0277",
"702-622-0277",
"(702) 622 0277",
"1234", // false
"7026220277",
"+17026220277", // should be false
"+17777036880277" // should be false
);
foreach($str as $each) {
if(preg_match($pattern, $each, $matches)) {
echo "$each is valid <br>";
} else {
echo "$each is invalid <br>";
}
}
输出:
702 622 0277 is valid
(702)622-0277 is valid
702-622-0277 is valid
(702) 622 0277 is valid
1234 is invalid
7026220277 is valid
+17026220277 is valid
+17777036880277 is valid
答案 0 :(得分:1)
这里的问题是你的字符串可以匹配中间的任何东西。因此+17026220277
匹配,因为7026220277
位于最后
尝试这种模式
$pattern = '/^\(?[\d]{3}\)?\s?\-?[\d]{3}\s?\-?[\d]{4}$/';
^
表示字符串的开头,$
表示结束