版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37796017/article/details/83444289
最近公司项目,需要用到正则表达式JavaScript 验证手机号码格式校验验证规则。由于手机号段的不断更新,以前的正则表达式已经无法满足当前需求。
以前我们偷懒只验证位数,或者如下只验证第二位:
/^1[34578]\d{9}$/
可是带来了问题,它无法验证一些不存在的号段。那么怎么办?因此我们要根据现在各大运营商已知号段进行校验。
以下为截止2018年1月各大运营商已知手机号码号段:
更新时间2018年1月11日
移动号段:
134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 198
联通号段:
130 131 132 145 146 155 156 166 171 175 176 185 186
电信号段:
133 149 153 173 174 177 180 181 189 199
虚拟运营商:
170
手机号码格式号段新增加了电信199号段、移动198号段、联通166号段
如上,我们得到了正则表达式:
/^0?(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/
这样就可以对手机号码格式进行相对严谨进行校验了。
注意这里初始值为0,不校验可去掉‘0?’。
/^(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/
由于电信199、移动198、联通166号段刚刚发布,所以很多网站和APP都没有更新验证规则或者短信平台未更新,以致于前端就给拦截了,希望早点更新!
有童鞋问我javascript、jquery中正则表达式咋写?
/*手机格式验证*/
$("#mobile").blur(function(){
var re =/^(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/;
var mobile=$("#mobile").val();
if(mobile.match(re)==null){
alert("手机号格式不正确!");
$("#mobile").val("");
}
});
这样phone_number就是取到的手机号码,即可!