- 菜鸟蛋疼,没用过正则表达式,突然想自己写个判定手机号码的,发现网上很多,很杂。问题很简单:正则大家都会写,只是手机号码段在变。所以,如下:
现行的手机号段一共有多少号段(2011.8.19)
目前我国开放的手机号段达到27种。其中,移动16种,联通7种,电信4种。晚报记者 祁京
目前有27种手机号段
移动:134、135、136、137、138、139、147、150、151、152、157、158、159、182、187、188
移动目前共有以上16个手机号段。其中,147、157、188是3G专用号段,其他都是2G号段。移动的3G标准为TD-SCDMA,是我国自主研发的3G技术标准,也是国际上通用的三大3G标准之一。
目前,147开头的号码主要用于上网本等数据业务,157则用于G3无线固话,188用于3G手机。其余13个2G手机号段则是由移动用户基数大决定的。
联通:130、131、132、155、156、185、186
在联通的7种号段中,186开头的是3G专用号段,其余为2G号段。联通的3G标准为WCDMA,是国际上使用最多的3G网络。
电信:133、153、180、189
电信原来只经营固定电话和宽带业务,接手联通的CDMA网络的133、153号段后,成为三大移动通信运营企业之一。目前,189采用的是国际上另一种通用的3G标准CDMA2000。
有了这个,哼哼,如下:
- /*判定手机号输入是否正确*/
- function ph(str)
- {
- /*移动号段16个(2011年版)
- 134、135、136、137、138、139、147、150、151、152、157、158、159、182、187、188
- 规则:可以以0开头+三位固定号段+8为数字*/
- var pattern1 = new RegExp(/^0{0,1}(13[4-9]|147|15[0-2]|15[7-9]18[278])[0-9]{8}$/);
- /*联通号段7个
- 130、131、132、155、156、185、186
- */
- var pattern2 = new RegExp(/^0{0,1}(13[0-2]|15[56]|18[56])[0-9]{8}$/);
- /*电信号段4个
- 133、153、180、189
- */
- var pattern3 = new RegExp(/^0{0,1}(133|153|180|189)[0-9]{8}$/);
- if(pattern1.test(str))
- {
- document.getElementById("ph").innerHTML = "移动";
- }
- else if(pattern2.test(str))
- {
- document.getElementById("ph").innerHTML = "联通";
- }
- else if(pattern3.test(str))
- {
- document.getElementById("ph").innerHTML = "电信";
- }
- else
- {
- document.getElementById("ph").innerHTML = "非手机号";
- }
- }
大家快点扔砖头吧。