【发布时间】:2015-11-09 04:06:45
【问题描述】:
如果号码有 10 位长度并且前 2 位需要是 09 并且请检查没有空格,我需要检查 php 吗?
样本真实数 = 0912345678
谢谢 拉敏
【问题讨论】:
标签: php regex preg-match digits string-length
如果号码有 10 位长度并且前 2 位需要是 09 并且请检查没有空格,我需要检查 php 吗?
样本真实数 = 0912345678
谢谢 拉敏
【问题讨论】:
标签: php regex preg-match digits string-length
您可以通过使用正则表达式来做到这一点,如下所示:
function checkNumber($number) {
return !!preg_match('/^09\d{8}$/', "$number");
}
或者用简单的字符串匹配:
function checkNumber($number) {
$number = trim("$number");
if (strlen($number) != 10)
return false;
if (substr($number, 0, 2) != "09")
return false;
return trim($number, "0..9") == "";
}
两种方法都给出相同的输出:
var_dump([$number = '0912345678', checkNumber($number)]);
var_dump([$number = '9012345678', checkNumber($number)]);
var_dump([$number = '091234567', checkNumber($number)]);
var_dump([$number = '09123456788', checkNumber($number)]);
// array(2) {
// [0]=>
// string(10) "0912345678"
// [1]=>
// bool(true)
// }
// array(2) {
// [0]=>
// string(10) "9012345678"
// [1]=>
// bool(false)
// }
// array(2) {
// [0]=>
// string(9) "091234567"
// [1]=>
// bool(false)
// }
// array(2) {
// [0]=>
// string(11) "09123456788"
// [1]=>
// bool(false)
// }
另外,正则表达式方法更简单灵活,恕我直言。
【讨论】:
true,它们也可以以 09 开头 和 90,因为 [09]{2} 表示“ 0 和 9 的两位数,顺序不限"
[0]{1} 或[9]{1} 构造中没有任何意义,因为它们可以用简单的0 和9 替换。因此,您可以使用以下模式之一:/^(09)(\d{8})$/、/^(09)([0-9]{8})$/