2019-12-25 18:06:35
围观(3964)
在一个项目中,判断手机号正确错误是很普遍使用的。本文将使用正则表达式验证手机号是否正确。
验证手机号的正则表达式:https://github.com/VincentSit/ChinaMobilePhoneNumberRegex
进去上面这个开源地址,就能看到多种最新可用匹配手机号的正则表达式,其中还能匹配手机号是什么运营商及卡类型。
本文就拿“匹配所有号码”作为演示。
^(?:+?86)?1(?:3d{3}|5[^4D]d{2}|8d{3}|7(?:[01356789]d{2}|4(?:0d|1[0-2]|9d))|9[13589]d{2}|6[2567]d{2}|4(?:[14]0d{3}|[68]d{4}|[579]d{2}))d{6}$
复制下来后一顿操作,写这样一段代码:
<?php $phone = 19999999999; if (isMobile($phone)) { echo '手机号正确'; } else { echo '手机号错误'; } function isMobile($phone) { if (!is_numeric($phone) || mb_strlen($phone) !== 11) { return false; } $regex = '#^(?:+?86)?1(?:3d{3}|5[^4D]d{2}|8d{3}|7(?:[01356789]d{2}|4(?:0d|1[0-2]|9d))|9[13589]d{2}|6[2567]d{2}|4(?:[14]0d{3}|[68]d{4}|[579]d{2}))d{6}$#'; return preg_match($regex, $phone); }
就完成验证手机号是否正确了。写代码时,会发现上面从 Github 复制的正则表达式并不能正确匹配,是因为需要把 Github 上复制的表达式首尾加上"#":
#^(?:+?86)?1(?:3d{3}|5[^4D]d{2}|8d{3}|7(?:[01356789]d{2}|4(?:0d|1[0-2]|9d))|9[13589]d{2}|6[2567]d{2}|4(?:[14]0d{3}|[68]d{4}|[579]d{2}))d{6}$#
上面这段代码是匹配所有正确的手机号,如果有其他需求,比如匹配某个运营商的,可以去上面的开源项目看看。
本文地址 : bubaijun.com/page.php?id=157
版权声明 : 未经允许禁止转载!
上一篇文章: PHP开发API接口的图形验证码
下一篇文章: phpStudy Linux面板使用体验