手機號正則表示式的使用
阿新 • • 發佈:2018-12-17
最近公司專案,需要用到正則表示式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就是取到的手機號碼,即可!