1. 程式人生 > >手機號段正則表示式 (2019-01 最新)

手機號段正則表示式 (2019-01 最新)

ி 前言

  • 溫馨提示:
    首先,有一點注意的是,手機號這種東西會不斷更新(時間跨度比較長,具體規則估計得去工信部檢視)
    所以,個人認為網上流傳的大多數介紹其 正則表示式 的文章,是無法保證規範與時效性的
    總結來說,如果想要保障嚴謹的規範性,就無法保證時效性, 建議花個十幾分鍾看一下 正則表示式 - 語法 ,自行制定需要的結果,同時儘量注意 及時更新過時的程式碼

文章最後更新時間2019 - 01 - 02

  • 國內移動、聯通、電信 三大運營商所管理的手機號段(最新)
— --- — 中國移動 中國聯通 中國電信 虛擬運營商
已有號段 134 135 136 137 138 139
147(上網絡卡)
150 151 152 157 158 159
165
172 178(4G)
182 183 184 187 188
130 131 132
145(上網絡卡)
155 156
171 175 176(4G)
185 186
133
149
153
173 174 177(4G)
180 181 189
191
170 171
新增號段
(2017-08-08 工信部)
1440(物聯網) 148(物聯網)
198
146(物聯網)
166
1410(物聯網)
199

✎ 正則表示式

  • 如果根據上文的手機號段,進行嚴謹的規則匹配,那麼得到的結果為:
/^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/
  • 如果覺得太過嚴謹,可以考慮使用
/^[1]([3-9])[0-9]{9}$/
  • 舉例,在 js 程式碼中進行應用的一種寫法:
    var telStr = /^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/;
    var inputStr = "18810998988";
    if (!(telStr.test(inputStr))) {
      flag = '手機號碼輸入不規範';
    }else{
	  msg = "手機號碼規範";
	}

➷ 參考部落格