PHP建站技术文档

PHP获取手机号码的正则表达式写法
  • 作者:合肥PHP建站
  • 发表时间:2023-09-15 10:09:32
  • 来源:合肥PHP建站

以下是一个用于获取中国大陆手机号码的正则表达式,适用于 PHP 语言:


$pattern = '/^(?:\+86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[235-8]\d{2}|4(?:0\d|1[0-2]|9\d))|9[189]\d{2}|6[2567]\d{2}|4(?:[14]0\d{3}|[68]\d{4}|[579]\d{2}))\d{6}$/';

这个正则表达式可以匹配以数字 1 开头,第二位为 3、5、8、7、9,后面跟着任意数字的手机号码。另外,这个正则表达式还考虑了以数字 1 开头,第二位为 6,后面跟着任意数字的手机号码。


你可以使用 preg_match() 函数来进行匹配,例如:



$pattern = '/^(?:\+86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[235-8]\d{2}|4(?:0\d|1[0-2]|9\d))|9[189]\d{2}|6[2567]\d{2}|4(?:[14]0\d{3}|[68]\d{4}|[579]\d{2}))\d{6}$/';

$phoneNumber = '13812345678';


if (preg_match($pattern, $phoneNumber)) {

    echo '手机号码有效';

} else {

    echo '手机号码无效';

}

注意,这个正则表达式并没有考虑以数字 1 开头,第二位为 4 且后面跟着 10 位数字的情况,因为这种格式的手机号码通常是用于物联网设备的。如果你需要匹配这种格式的手机号码,请将正则表达式中的 4(?:[14]0\d{3}|[68]\d{4}|[579]\d{2}) 部分修改为 4[1-9]\d{9}。