手机号码合法性判断
这里主要讲解如何利用正则表达式来验证手机号是否合法,匹配手机号码的正则表达式。
最新正则表达式截止到2018-10-13
/^0?(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/
目前匹配号段
1.中国电信号段
133、149、153、173、177、180、181、189、199
2.中国联通号段
130、131、132、145、155、156、166、175、176、185、186
3.中国移动号段
134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188、198
4.其他号段
14号段以前为上网卡专属号段,如中国联通的是145,中国移动的是147等等。
5.虚拟运营商
电信:1700、1701、1702 移动:1703、1705、1706 联通:1704、1707、1708、1709、171
php实现源码如下:
/**
* 检测是否为手机
* 旧:/^1[3|4|5|7|8][0-9]\d{4,8}$/
* 新:/^0?(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/
* @param $phone 验证手机号
* @return boolean
*
*/
public function is_tel($phone) {
if (strlen ( $phone ) != 11 || ! preg_match ( '/^0?(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/', $phone )) {
return false;
} else {
return true;
}
}