正则表达式判定手机号码(终极版)

来源:互联网 发布:java无法加载主类 编辑:程序博客网 时间:2024/05/17 08:43

[html]
 view plaincopy
  1. 菜鸟蛋疼,没用过正则表达式,突然想自己写个判定手机号码的,发现网上很多,很杂。问题很简单:正则大家都会写,只是手机号码段在变。所以,如下:  

现行的手机号段一共有多少号段(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。

有了这个,哼哼,如下:

[html] view plaincopy
  1. /*判定手机号输入是否正确*/  
  2.   function ph(str)  
  3.   {  
  4.     /*移动号段16个(2011年版)  
  5.     134、135、136、137、138、139、147、150、151、152、157、158、159、182、187、188  
  6.     规则:可以以0开头+三位固定号段+8为数字*/  
  7.     var pattern1 = new RegExp(/^0{0,1}(13[4-9]|147|15[0-2]|15[7-9]18[278])[0-9]{8}$/);  
  8.     /*联通号段7个  
  9.     130、131、132、155、156、185、186  
  10.     */  
  11.     var pattern2 = new RegExp(/^0{0,1}(13[0-2]|15[56]|18[56])[0-9]{8}$/);  
  12.     /*电信号段4个  
  13.     133、153、180、189   
  14.     */  
  15.     var pattern3 = new RegExp(/^0{0,1}(133|153|180|189)[0-9]{8}$/);  
  16.     if(pattern1.test(str))  
  17.     {  
  18.         document.getElementById("ph").innerHTML = "移动";  
  19.     }  
  20.     else if(pattern2.test(str))  
  21.     {  
  22.         document.getElementById("ph").innerHTML = "联通";  
  23.     }  
  24.     else if(pattern3.test(str))  
  25.     {  
  26.         document.getElementById("ph").innerHTML = "电信";  
  27.     }  
  28.     else  
  29.     {  
  30.         document.getElementById("ph").innerHTML = "非手机号";  
  31.     }  
  32.   }  


大家快点扔砖头吧。

原创粉丝点击